1.容器
?? 順序: vector(類似動態增長數組)? deque?(雙端隊列)? list(雙頭指針)
?? 關聯:set ?multiset(有重復)? map?? multiset(有重復) ,自動排序(內部2叉樹)
? 特殊預定義容器:stack, queue ,prority queue
2.迭代器
????? 每種容器都提供了自己的迭代器,相同的操作界面,不同的內部實現,
?? *,->,==,!=,++,--共同操作
???? 隨機iterator : 支持 >,<:如:vector, deque,string
??? 雙向iterator:不支持>,<:
?? 特殊預定義:
插入迭代器
????????? insert iterator:引起自動增長,非覆蓋
???????????? back_inserter(container)
???????????? front_inserter(container)
?????????? inserter(container,pos)//調用?container.insert()//每種容器都具有insert()//關聯容器唯一
?流迭代器
???????????? istream_iterator
???????????? ostream_iterator
?逆向迭代器
容器中元素應滿足:
???? 有拷貝構造,賦值運算符,析構能銷毀
?? 順序:默認構造應該可用
?? 關聯:必須有排序準則
容器中是 值不是引用
通用操作:
?? 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
??? 動態增長數組,在隊尾插入,刪除效率高
注意 動態增長時 迭代器失效 內部可能要重配置
除了clear(),vector 不會自動縮小
vector 的迭代器 就是 元素的native指針,連續存儲,迭代器是個random
空判斷
?????? a.begin==a.end
4.list?
?? 迭代器是個雙向的,非連續存儲,而且是個環狀鏈表在尾端是個未初始化節點
空判斷
?? a.begin==a.end;
clear? remove? unique(把相同元素移出,留一個) ?insert
只能使用成員函數 sort,不能使用?算法 sort(他只接受random iterator)
5 .deque
動態增長的雙端隊列 ,但內部機制和vector 不一樣 ,若干連續存儲的集合
算法復雜度高,如排序時可將 其復制到 vector中,頭/尾插入/刪除效率高? ,
提供隨機迭代器
6.stack (container adapter)
先進后出,不供迭代器, 不提供走訪功能
7.queue(container adapter)
??先進先出,不提供迭代器,不提供走訪功能
8.heap 輔助
?? 其內部為一個完全2叉樹,插入時自動排序,一般為max_heap
???左右無序,某節點?i,?父節點?i/2,左子節點 2i,右子節點 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,關聯容器 ,底層以rb-tree 實現,其迭代器為個const iterator
?? 不能用迭代器來改變 元素值,缺省下以遞增排序
posted on 2006-06-02 15:43
黃大仙 閱讀(1085)
評論(0) 編輯 收藏 引用 所屬分類:
c++