變長(zhǎng)一維數(shù)組,連續(xù)存儲(chǔ)內(nèi)存塊,保留內(nèi)存,堆內(nèi)存分配;
支持[]操作,高效隨機(jī)訪(fǎng)問(wèn);
添加元素時(shí),一般不需要分配內(nèi)存空間,速度快;在中間或開(kāi)始操作元素時(shí),內(nèi)存復(fù)制效率低;
vector高效的原因是配置的內(nèi)存比所容納的元素多,重新配置內(nèi)存需要很多時(shí)間;
注:需要高效的立即訪(fǎng)問(wèn),而不是插入和刪除vector。
2、list
雙向鏈表,內(nèi)存空間可能不連續(xù),無(wú)保留內(nèi)存,堆內(nèi)存分配;
不支持隨機(jī)訪(fǎng)問(wèn),開(kāi)始和結(jié)束元素訪(fǎng)問(wèn)時(shí)間快,其他元素O(n);
插入和刪除元素在任何位置都比較快,java視頻教程的插入和刪除不會(huì)使其他元素的每一個(gè)pointer,reference,iterator失效;
注:大量插入和刪除,并立即訪(fǎng)問(wèn)list。
3、deque
雙端隊(duì)列在堆上分配內(nèi)存,一堆間用指針連接幾個(gè)元素;
支持[]操作,快速插入和刪除元素,慢慢插入和刪除元素,如list和vector的結(jié)合;
注:注意插入和刪除,并立即存取折中使用deque。
4、set&multiset
按照給定的排序規(guī)則(默認(rèn)按)有序集合,存放平衡二叉樹(shù)less排序)對(duì)set排序中的數(shù)據(jù);
set重復(fù)元素不允許,multiset中間運(yùn)行重復(fù)元素;
不支持直接訪(fǎng)問(wèn)元素的操作;
搜索元素更快,因?yàn)樗亲詣?dòng)排序;
元素值不能直接改變,否則會(huì)打亂原有的正確順序,必須先刪除舊元素,再插入新元素。
5、map&multimap
字典庫(kù),一個(gè)值映射成另一個(gè)值,并按照給定的排序規(guī)則存儲(chǔ)平衡二叉樹(shù)map中的key排序值;
map中的key不允許重復(fù),multimap中的key允許重復(fù);
根據(jù)已知的key值搜索元素快;
插入和刪除操作緩慢。