0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是list?

汽車電子技術(shù) ? 來源:C語言Plus ? 作者:Maye426 ? 2023-02-27 15:52 ? 次閱讀

一、什么是 list?

list 容器,又稱雙向鏈表容器,即該容器的底層是以雙向鏈表的形式實(shí)現(xiàn)的。這意味著,list 容器中的元素可以分散存儲(chǔ)在內(nèi)存空間里,而不是必須存儲(chǔ)在一整塊連續(xù)的內(nèi)存空間中。跟任意其它類型容器一樣,它能夠存放各種類型的對(duì)象。

二、容器特性

1.線性存儲(chǔ)(非連續(xù))

list是由多個(gè)節(jié)點(diǎn)組成的。

2.雙向鏈表

list 容器具有一些其它容器(array、vector 和 deque)所不具備的優(yōu)勢(shì),即它可以在序列已知的任何位置快速插入或刪除元素(時(shí)間復(fù)雜度為O(1))。并且在 list 容器中移動(dòng)元素,也比其它容器的效率高。

3.支持隨機(jī)訪問迭代器(下一章介紹)

不支持隨機(jī)訪問迭代器,只能從容器中第一個(gè)元素或最后一個(gè)元素開始遍歷容器,直到找到該位置。

三、基本函數(shù)實(shí)現(xiàn)

1,構(gòu)造函數(shù)

  • list();創(chuàng)建一個(gè)空list
  • list(int nSize);創(chuàng)建一個(gè)list,元素個(gè)數(shù)為nSize
  • list(int nSize,const t& t);創(chuàng)建一個(gè)list,元素個(gè)數(shù)為nSize,且值均為t
  • list(const list&);復(fù)制構(gòu)造函數(shù)
  • list(begin,end);復(fù)制[begin,end)區(qū)間內(nèi)另一個(gè)數(shù)組的元素到list中

2.增加函數(shù)

  • void push_back(const T& x); 尾部增加一個(gè)元素X
  • void push_front(const T& x); 頭部增加一個(gè)元素X
  • iterator insert(iterator it,const T& x);鏈表中迭代器指向元素前增加一個(gè)元素x
  • iterator insert(iterator it,int n,const T& x);鏈表中迭代器指向元素前增加n個(gè)相同的元素x
  • iterator insert(iterator where,const_iterator first,const_iterator last);鏈表中迭代器指向元素前插入另一個(gè)相同類型鏈表的[first,last)間的數(shù)據(jù)

3.刪除函數(shù)

  • iterator erase(iterator it);刪除鏈表中迭代器指向元素
  • iterator erase(iterator first,iterator last);刪除鏈表中[first,last)中元素
  • void pop_back();刪除鏈表中最后一個(gè)元素
  • void pop_front();刪除鏈表中的第一個(gè)元素
  • void clear();清空鏈表中所有元素

4.遍歷函數(shù)

  • reference front();返回首元素的引用
  • reference back();返回尾元素的引用
  • iterator begin();返回鏈表頭指針,指向第一個(gè)元素
  • iterator end();返回鏈表尾指針,指向鏈表最后一個(gè)元素的下一個(gè)位置
  • reverse_iterator rbegin();反向迭代器,指向最后一個(gè)元素
  • reverse_iterator rend();反向迭代器,指向第一個(gè)元素之前的位置

5.判斷函數(shù)

  • bool empty() const;判斷容器中是否有元素,若無元素,則返回 true;反之,返回 false。

6.大小函數(shù)

  • int size() const;返回鏈表中元素的個(gè)數(shù)
  • int max_size() const;返回最大可允許的list元素?cái)?shù)量值

7.其他函數(shù)

  • void swap(list&);交換兩個(gè)同類型鏈表的數(shù)據(jù)
  • void assign(int count,const T& x); 把鏈表元素設(shè)置為count個(gè),每個(gè)元素都是x

四、基本用法

#include 
#include
using namespace std;
int main()
{
  list<int> ls;
  for (int i = 0; i < 10; i++)
  {
    ls.push_back(i);
  }
  for (auto i : ls)
  {
    cout << i << " ";
  }
  cout << endl;
  while (!ls.empty())//如果鏈表不為空就一直刪除尾部元素
  {
    cout<

童孩~你又廢了?多多練習(xí)哦,光看是學(xué)不會(huì)的

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3081

    瀏覽量

    74604
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    502

    瀏覽量

    22198
  • 鏈表
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    10644
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    交流電源List波形編輯功能如何使用

    很多朋友們對(duì)于交流電源中的List波形編輯功能只限于知道有此功能,但不知道如何操作。為此,今天博宇訊銘工程師以全天交流電源為測(cè)試儀器,針對(duì)List波形編輯功能進(jìn)行實(shí)際操作,希望能夠幫助到有需要的朋友們,更好的應(yīng)用交流電源List
    的頭像 發(fā)表于 10-11 13:28 ?1924次閱讀
    交流電源<b class='flag-5'>List</b>波形編輯功能如何使用

    c++之list容器

    list是序列容器,允許在序列中的任何位置執(zhí)行固定O(1)時(shí)間復(fù)雜度的插入和刪除操作,并在兩個(gè)方向進(jìn)行迭代。list容器是一個(gè)雙向循環(huán)鏈表。
    的頭像 發(fā)表于 07-15 08:53 ?1604次閱讀
    c++之<b class='flag-5'>list</b>容器

    OpenHarmony語言基礎(chǔ)類庫【@ohos.util.List (線性容器List)】

    List底層通過單向鏈表實(shí)現(xiàn),每個(gè)節(jié)點(diǎn)有一個(gè)指向后一個(gè)元素的引用。當(dāng)需要查詢?cè)貢r(shí),必須從頭遍歷,插入、刪除效率高,查詢效率低。List允許元素為null。
    的頭像 發(fā)表于 05-10 16:57 ?848次閱讀
    OpenHarmony語言基礎(chǔ)類庫【@ohos.util.<b class='flag-5'>List</b> (線性容器<b class='flag-5'>List</b>)】

    List of Equivalent Product

    List of Equivalent Product
    發(fā)表于 08-19 12:32 ?12次下載

    MAX16834 boost component list

    MAX16834 boost component list
    發(fā)表于 06-17 17:55 ?0次下載

    pad_list_LPC11U68_JBD100

    pad_list_LPC11U68JBD100
    發(fā)表于 07-15 16:23 ?42次下載

    Allwinner Technology Nand Flash Support List

    Allwinner Technology Nand Flash Support List—全志科技NAND Flash支持列表。
    發(fā)表于 09-26 16:31 ?2次下載

    Allwinner Axx SDRAM Support List

    Allwinner Axx SDRAM Support List——全志分SDRAM支持列表。
    發(fā)表于 09-26 16:31 ?8次下載

    Python基礎(chǔ)變量類型—List分析

    本文基于Python基礎(chǔ),主要介紹了Python基礎(chǔ)中list列表,通過list列表的兩個(gè)函數(shù) ,對(duì)list的語法做了詳細(xì)的講解,用豐富的案例 ,代碼效果圖的展示幫助大家更好理解 。
    的頭像 發(fā)表于 12-24 17:37 ?1177次閱讀

    Automotive Recommended Products List

    Automotive Recommended Products List
    發(fā)表于 02-03 15:27 ?0次下載
    Automotive Recommended Products <b class='flag-5'>List</b>

    E8a Emulator 軟件 Component List

    E8a Emulator 軟件 Component List
    發(fā)表于 04-03 19:54 ?0次下載
    E8a Emulator 軟件 Component <b class='flag-5'>List</b>

    E8a Emulator 軟件 Component List

    E8a Emulator 軟件 Component List
    發(fā)表于 07-14 11:01 ?0次下載
    E8a Emulator 軟件 Component <b class='flag-5'>List</b>

    list.sort()排序比stream().sorted()排序性能更好嗎?

    看到一個(gè)評(píng)論,里面提到了list.sort()和list.strem().sorted()排序的差異。
    的頭像 發(fā)表于 08-09 10:27 ?1090次閱讀
    <b class='flag-5'>list</b>.sort()排序比stream().sorted()排序性能更好嗎?

    List 轉(zhuǎn) Map的方法

    在我們平時(shí)的工作中,充滿了各種類型之間的轉(zhuǎn)換。今天小編帶大家上手 List 轉(zhuǎn) Map 的各種操作。 我們將假設(shè) List 中的每個(gè)元素都有一個(gè)標(biāo)識(shí)符,該標(biāo)識(shí)符將在生成的 Map 中作為一個(gè)鍵
    的頭像 發(fā)表于 10-09 16:10 ?1825次閱讀

    交流電源List波形編輯功能如何使用?

    交流電源List波形編輯功能如何使用? 交流電源List波形編輯功能是一種用于生成和編輯交流電源波形的工具。它通常被應(yīng)用于電力系統(tǒng)仿真、電氣工程設(shè)計(jì)、電子設(shè)備測(cè)試等領(lǐng)域。下面將詳細(xì)介紹交流電源
    的頭像 發(fā)表于 01-19 15:01 ?919次閱讀