一. 種類:
值得注意的是,陣列可以和
stl演算法配合,因為指標可以當作陣列的迭代器使用。 二.
刪除元素
如果想刪除東西,記住
remove
演算法後,要加上
erase
所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為
remove
並不知道它現在作用於哪個容器,所以
remove
演算法不可能真的刪除乙個元素
1.vector
vector
<
int>
v;
v.reserve(
10);
for(
inti =1
; i
<=
10;
++i)
cout
<<
v.size();
//10v[3
] =v[5
] =v[9
] =99;
remove(v.begin(), v.end(),
99);
cout
<<
v.size();
//10!
2. list
listlisttest;
listtest.remove(99);//
這個成員函式將真的刪除元素,並且要比
erase+remove高效
remove
和remove_if
之間的十分相似。但
unique
行為也像
remove
。它用來從乙個區間刪除東西(鄰近的重複值)而不用訪問持有區間元素的容器。如果你真的要從容器中刪除元素,你也必須成對呼叫
unique
和erase
,unique
在list
中也類似於
remove
。正像list::remove
真的刪除東西(而且比
erase-remove
慣用法高效得多)。
list::unique
也真的刪除鄰近的重複值(也比
erase-unique
高效)。
三 迭代器失效:
乙個網友提的問題:
void
main() i
=8; }
}典型的迭代器失效
deque迭代器的失效情況:
1.在deque容器首部或者尾部插入元素不會使得任何迭代器失效。
2.在其首部或尾部刪除元素則只會使指向被刪除元素的迭代器失效。
3.在deque容器的任何其他位置的插入和刪除操作將使指向該容器元素的所有迭代器失效。
list/set/map
1.刪除時,指向該刪除節點的迭代器失效
list
<
int>
intlist;
list
<
int>
::iterator it
=intlist.begin();
while
(it
!=intlist.end())
四.選擇時機《轉》--總結各種容器特點
STL容器總結
stl 豆瓣 stl模板類總結 友朋小盧 友朋小盧 2012 09 19 00 19 29 一 vector模板類 1 包含在標頭檔案vector中,內部機理是使用動態記憶體分配。2 如何定義vector類 vectorstr 5 vector vector int n 3 操作賦被過載,所以可以這...
stl容器簡單總結
標準容器類 說明順序性容器 vector 從後面快速的插入與刪除,直接訪問任何元素 deque 從前面或後面快速的插入與刪除,直接訪問任何元素 list 雙鏈表,從任何地方快速插入與刪除 關聯容器 set快速查詢,不允許重複值 multiset 快速查詢,允許重複值 map一對多對映,基於關鍵字快速...
STL 容器總結(一)
一 所有容器的共通操作 1 equality 和 inequality 運算子,返回 true 或者 false。2 assignment 運算子,將某個容器複製給另乙個容器。3 empty 會在容器沒有任何元素的時候返回 true,否則 false。4 size 返回目前容器中持有元素的數目。5 ...