国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

標(biāo)準(zhǔn)模板庫(kù)STL——deque和list

這篇具有很好參考價(jià)值的文章主要介紹了標(biāo)準(zhǔn)模板庫(kù)STL——deque和list。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

deque概述

deque屬于順序容器,稱為雙端隊(duì)列容器

底層數(shù)據(jù)結(jié)構(gòu)是動(dòng)態(tài)二維數(shù)組,從整體上看,deque的內(nèi)存不連續(xù)

初始數(shù)組第一維數(shù)量為2,必要時(shí)進(jìn)行2倍擴(kuò)容

每次第一維擴(kuò)容后,原來(lái)數(shù)組第二維元素從新數(shù)組下標(biāo)為OldSize/2的第一維開始存儲(chǔ)

這樣的存儲(chǔ)方式使得前后都預(yù)留相同空間,方便支持deque首尾元素添加

數(shù)組第二維長(zhǎng)度固定

deque相關(guān)操作

// deque相較于vector增加的相關(guān)操作有:push_front()和pop_front()

deque<int> deq;

// 1、添加
deq.push_back(10);
// (1)向末尾添加元素10,時(shí)間復(fù)雜度為O(1)
deq.push_front(20);
// (2)向首部添加元素20,時(shí)間復(fù)雜度為O(1)
deq.insert(it, 30);
// (3)向迭代器it處添加元素30,需要挪動(dòng)元素和更新迭代器,時(shí)間復(fù)雜度為O(n)

// 2、刪除
deq.pop_back();
// (1)刪除末尾元素,時(shí)間復(fù)雜度為O(1)
deq.pop_front();
// (2)刪除首部元素,時(shí)間復(fù)雜度為O(1)
deq.erase(it);
// (3)刪除迭代器it處元素,需要挪動(dòng)元素和更新迭代器,時(shí)間復(fù)雜度為O(n)

// 3、查詢
// (1)使用迭代器遍歷

辨析vector和deque

1、底層數(shù)據(jù)結(jié)構(gòu)不同

vector底層是動(dòng)態(tài)一維數(shù)組;

deque底層是動(dòng)態(tài)二維數(shù)組

2、添加刪除元素的時(shí)間復(fù)雜度不同

首部添加刪除操作頻繁,選擇deque

3、內(nèi)存使用效率不同

vector需要連續(xù)內(nèi)存空間,內(nèi)存使用效率低;

deque分塊存儲(chǔ)數(shù)據(jù),不要求內(nèi)存空間連續(xù),內(nèi)存使用效率高

4、在中間位置添加刪除的效率不同

vector效率更高,deque效率更低

因?yàn)関ector使用連續(xù)內(nèi)存空間,方便挪動(dòng)元素

而deque的內(nèi)存空間不連續(xù),不便挪動(dòng)元素

list概述

list屬于順序容器,稱為鏈表容器

底層數(shù)據(jù)結(jié)構(gòu)是雙向循環(huán)鏈表

list相關(guān)操作

// list相較于vector增加的相關(guān)操作有:push_front()和pop_front()

list<int> mylist;

// 1、添加
mylist.push_back(10);
// (1)向末尾添加元素10,時(shí)間復(fù)雜度為O(1)
mylist.push_front(20);
// (2)向首部添加元素20,時(shí)間復(fù)雜度為O(1)
mylist.insert(it, 30);
// (3)向迭代器it處添加元素30,需要更新迭代器,時(shí)間復(fù)雜度為O(1)
// 鏈表進(jìn)行insert前,需要進(jìn)行query查詢
// 對(duì)于鏈表來(lái)說(shuō),query查詢效率低

// 2、刪除
mylist.pop_back();
// (1)刪除末尾元素,時(shí)間復(fù)雜度為O(1)
mylist.pop_front();
// (2)刪除首部元素,時(shí)間復(fù)雜度為O(1)
mylist.erase(it);
// (3)刪除迭代器it處元素,需要更新迭代器,時(shí)間復(fù)雜度為O(1)

// 3、查詢
// (1)使用迭代器遍歷

辨析vector和list

1、底層數(shù)據(jù)結(jié)構(gòu)不同

vector底層是動(dòng)態(tài)一維數(shù)組;

list底層是雙向循環(huán)鏈表

2、時(shí)間復(fù)雜度不同

vector:增加刪除O(n)、查詢O(n)、隨機(jī)訪問(wèn)O(1)

list:增加刪除O(1)、查詢O(n)

增加刪除操作頻繁,選擇list;

隨機(jī)訪問(wèn)操作頻繁,選擇vector文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-656740.html

到了這里,關(guān)于標(biāo)準(zhǔn)模板庫(kù)STL——deque和list的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 0829|C++day7 auto、lambda、C++數(shù)據(jù)類型轉(zhuǎn)換、C++標(biāo)準(zhǔn)模板庫(kù)(STL)、list、文件操作

    0829|C++day7 auto、lambda、C++數(shù)據(jù)類型轉(zhuǎn)換、C++標(biāo)準(zhǔn)模板庫(kù)(STL)、list、文件操作

    ? ? 封裝一個(gè)學(xué)生的類,定義一個(gè)學(xué)生這樣類的vector容器, 里面存放學(xué)生對(duì)象(至少3個(gè)) 再把該容器中的對(duì)象,保存到文件中。 再把這些學(xué)生從文件中讀取出來(lái),放入另一個(gè)容器中并且遍歷輸出該容器里的學(xué)生。

    2024年02月10日
    瀏覽(18)
  • 標(biāo)準(zhǔn)模板庫(kù)STL——迭代器

    目錄 四類迭代器概述 代碼段 普通正向迭代器 普通反向迭代器 常量正向迭代器 常量反向迭代器 四類迭代器 普通正向迭代器 iterator 常量正向迭代器 const_iterator 普通反向迭代器 reverse_iterator 常量反向迭代器 const_reverse_iterator 解釋說(shuō)明 普通表示可以讀元素,也可以寫元素; 常量

    2024年02月12日
    瀏覽(25)
  • 58.C++ STL標(biāo)準(zhǔn)模板庫(kù) STL概述 STL三大組件

    58.C++ STL標(biāo)準(zhǔn)模板庫(kù) STL概述 STL三大組件

    ? ? ? ? 長(zhǎng)久以來(lái),軟件界?直希望建??種可重復(fù)利?的東?,以及?種得以制造出”可重復(fù)運(yùn)?的東?”的?法,讓程序員的??不?于隨時(shí)間的遷移,?事異動(dòng)?煙消云散,從函(functions),類別(classes),函數(shù)庫(kù)(functionlibraries),類別庫(kù)(class libraries)、各種組件,從模塊化設(shè)計(jì)

    2024年02月12日
    瀏覽(52)
  • 15 標(biāo)準(zhǔn)模板庫(kù)STL之簡(jiǎn)介

    STL ????????STL,即標(biāo)準(zhǔn)模板庫(kù),英文全稱為Standard Template Library。STL最初由惠普實(shí)驗(yàn)室開發(fā),于1998年被定為國(guó)際標(biāo)準(zhǔn),正式成為C++標(biāo)準(zhǔn)庫(kù)中不可或缺的重要組成部分,也是C++標(biāo)準(zhǔn)庫(kù)中極具革命性的一部分。STL包含了很多在計(jì)算機(jī)科學(xué)領(lǐng)域常用的基本數(shù)據(jù)結(jié)構(gòu)和基本算法,為

    2023年04月19日
    瀏覽(21)
  • 16 標(biāo)準(zhǔn)模板庫(kù)STL之vector

    基礎(chǔ)知識(shí) ????????1、vector和數(shù)組有點(diǎn)類似,但它比數(shù)組更好用。一般來(lái)說(shuō),數(shù)組的長(zhǎng)度是不能動(dòng)態(tài)拓展的,因此就需要考慮長(zhǎng)度到底多大合適。長(zhǎng)度不能過(guò)大,否則浪費(fèi)內(nèi)存;也不能過(guò)小,否則內(nèi)存不夠。vector正好彌補(bǔ)了這個(gè)缺陷,相當(dāng)于一個(gè)可以自動(dòng)改變數(shù)組長(zhǎng)度的動(dòng)

    2023年04月17日
    瀏覽(20)
  • 21 標(biāo)準(zhǔn)模板庫(kù)STL之string

    概述 ????????從嚴(yán)格意義上來(lái)說(shuō),string并不是STL中的容器,但它與容器有很多類似的接口和操作。string是STL中的一個(gè)類,對(duì)char *或char[]類型的字符串進(jìn)行了封裝。使用string后,不需要再考慮內(nèi)存是否足夠、內(nèi)存是否未釋放、內(nèi)存越界等問(wèn)題。除此之外,string還提供了一系

    2024年02月04日
    瀏覽(20)
  • 23 標(biāo)準(zhǔn)模板庫(kù)STL之迭代器

    概述 ????????迭代器作為STL中的三大組件之一,是容器和算法的粘合劑。迭代器提供了訪問(wèn)容器中元素的方法,每一種容器都提供了自己的迭代器,而這些迭代器向外界隱藏了容器的內(nèi)部結(jié)構(gòu)。算法使用迭代器訪問(wèn)容器中的元素,不需要關(guān)心容器的內(nèi)部結(jié)構(gòu)。 ???????

    2024年02月05日
    瀏覽(18)
  • 24 標(biāo)準(zhǔn)模板庫(kù)STL之算法1

    概述 ????????算法是STL中用來(lái)處理容器中數(shù)據(jù)的一系列模板函數(shù),可以對(duì)數(shù)據(jù)集合進(jìn)行查找、排序、拷貝等操作。通過(guò)使用迭代器,算法可以運(yùn)用在任意容器之上,做到與操作的數(shù)據(jù)的類型和結(jié)構(gòu)無(wú)關(guān)。 ????????STL算法博大精深,涵蓋范圍非常之廣,一共提供了大約

    2024年02月05日
    瀏覽(21)
  • 25 標(biāo)準(zhǔn)模板庫(kù)STL之算法2

    搜索算法 ????????常用的搜索算法可參看下表。 函數(shù)名 算法描述 search 搜索迭代器區(qū)間中與另一個(gè)迭代器區(qū)間所有元素匹配的第一次的位置 search_n 搜索迭代器區(qū)間中與若干個(gè)相同元素匹配的第一次的位置 binary_search 以二分法在有序序列中查找指定值,找到返回true,否則

    2024年02月06日
    瀏覽(16)
  • 15 標(biāo)準(zhǔn)模板庫(kù)STL之容器1

    基礎(chǔ)知識(shí) ????????1、vector和數(shù)組有點(diǎn)類似,但它比數(shù)組更好用。一般來(lái)說(shuō),數(shù)組的長(zhǎng)度是不能動(dòng)態(tài)拓展的,因此就需要考慮長(zhǎng)度到底多大合適。長(zhǎng)度不能過(guò)大,否則浪費(fèi)內(nèi)存;也不能過(guò)小,否則內(nèi)存不夠。vector正好彌補(bǔ)了這個(gè)缺陷,相當(dāng)于一個(gè)可以自動(dòng)改變數(shù)組長(zhǎng)度的動(dòng)

    2023年04月12日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包