一. 種類:
值得注意的是,陣列可以和
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演算法配合,因為指標可以當作陣列的迭代器使用。二.刪除元素 如果想刪除東西,記住 remove 演算法後,要加上 erase 所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為 remove 並不知道它現在作用於哪個容器,所以 remove 演算...
STL之容器 選擇時機,刪除元素,迭代器失效
一.種類 值得注意的是,陣列可以和stl 演算法配合,因為指標可以當作陣列的迭代器使用。二.刪除元素 如果想刪除東西,記住 remove 演算法後,要加上 erase 所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為 remove 並不知道它現在作用於哪個容器,所以 remove 演算...
STL容器 刪除元素,迭代器失效,選擇時機
一.種類 值得注意的是,陣列可以和 stl演算法配合,因為指標可以當作陣列的迭代器使用。二.刪除元素 如果想刪除東西,記住 remove 演算法後,要加上 erase 所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為 remove 並不知道它現在作用於哪個容器,所以 remove 演算...