1.容器
?? 順序: vector(類似動(dòng)態(tài)增長(zhǎng)數(shù)組)? deque?(雙端隊(duì)列)? list(雙頭指針)
?? 關(guān)聯(lián):set ?multiset(有重復(fù))? map?? multiset(有重復(fù)) ,自動(dòng)排序(內(nèi)部2叉樹(shù))
? 特殊預(yù)定義容器:stack, queue ,prority queue
2.迭代器
????? 每種容器都提供了自己的迭代器,相同的操作界面,不同的內(nèi)部實(shí)現(xiàn),
?? *,->,==,!=,++,--共同操作
???? 隨機(jī)iterator : 支持 >,<:如:vector, deque,string
??? 雙向iterator:不支持>,<:
?? 特殊預(yù)定義:
插入迭代器
????????? insert iterator:引起自動(dòng)增長(zhǎng),非覆蓋
???????????? back_inserter(container)
???????????? front_inserter(container)
?????????? inserter(container,pos)//調(diào)用?container.insert()//每種容器都具有insert()//關(guān)聯(lián)容器唯一
?流迭代器
???????????? istream_iterator
???????????? ostream_iterator
?逆向迭代器
容器中元素應(yīng)滿足:
???? 有拷貝構(gòu)造,賦值運(yùn)算符,析構(gòu)能銷毀
?? 順序:默認(rèn)構(gòu)造應(yīng)該可用
?? 關(guān)聯(lián):必須有排序準(zhǔn)則
容器中是 值不是引用
通用操作:
?? containertype c;
? ct? c(c1);
? ct?? c(begin,end);
?c.~ct();
?c.size(), c.max_size(),c.empty(),c1==c2;c1<c2;c1.swap(c2);?swap(c1,c2);c.begin();c.end();c.rbegin();c.rend();
c.inert(pos,elem);c.erase(begin,end),c.clear(),c.get_allocator
?
???? 3.vector
??? 動(dòng)態(tài)增長(zhǎng)數(shù)組,在隊(duì)尾插入,刪除效率高
注意 動(dòng)態(tài)增長(zhǎng)時(shí) 迭代器失效 內(nèi)部可能要重配置
除了clear(),vector 不會(huì)自動(dòng)縮小
vector 的迭代器 就是 元素的native指針,連續(xù)存儲(chǔ),迭代器是個(gè)random
空判斷
?????? a.begin==a.end
4.list?
?? 迭代器是個(gè)雙向的,非連續(xù)存儲(chǔ),而且是個(gè)環(huán)狀鏈表在尾端是個(gè)未初始化節(jié)點(diǎn)
空判斷
?? a.begin==a.end;
clear? remove? unique(把相同元素移出,留一個(gè)) ?insert
只能使用成員函數(shù) sort,不能使用?算法 sort(他只接受random iterator)
5 .deque
動(dòng)態(tài)增長(zhǎng)的雙端隊(duì)列 ,但內(nèi)部機(jī)制和vector 不一樣 ,若干連續(xù)存儲(chǔ)的集合
算法復(fù)雜度高,如排序時(shí)可將 其復(fù)制到 vector中,頭/尾插入/刪除效率高? ,
提供隨機(jī)迭代器
6.stack (container adapter)
先進(jìn)后出,不供迭代器, 不提供走訪功能
7.queue(container adapter)
??先進(jìn)先出,不提供迭代器,不提供走訪功能
8.heap 輔助
?? 其內(nèi)部為一個(gè)完全2叉樹(shù),插入時(shí)自動(dòng)排序,一般為max_heap
???左右無(wú)序,某節(jié)點(diǎn)?i,?父節(jié)點(diǎn)?i/2,左子節(jié)點(diǎn) 2i,右子節(jié)點(diǎn) 2i+1;
?
template<class RandomAccessIterator> inline void make_heap( RandomAccessIterator First, RandomAccessIterator Last )template<class RandomAccessIterator> inline void sort_heap( RandomAccessIterator First, RandomAccessIterator Last )template<class RandomAccessIterator> inline void push_heap( RandomAccessIterator First, RandomAccessIterator Last )template<class RandomAccessIterator> inline void pop_heap( RandomAccessIterator First, RandomAccessIterator Last )
?????????
???????????? 9.set,關(guān)聯(lián)容器 ,底層以rb-tree 實(shí)現(xiàn),其迭代器為個(gè)const iterator
?? 不能用迭代器來(lái)改變 元素值,缺省下以遞增排序
posted on 2006-06-02 15:43
黃大仙 閱讀(1097)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
c++