測試用例:
vector<
int> a =
; vector<
int> b =
;auto it = a.
begin()
;auto ii = b.
begin()
; cout <<
"a的第乙個是"
<<
*it << endl;
cout <<
"b的第乙個是"
<<
*ii << endl;
swap
(a, b)
; cout <<
"交換後a的第乙個是"
<<
*it++
<< endl;
cout <<
"a的第二個是"
<<
*it << endl;
cout <<
"b的第乙個是"
<<
*ii++
<< endl;
cout <<
"交換後b的第二個是"
<<
*ii << endl;
// 實際輸出15
1256
以上說明,swap後 指向這幾個容器的迭代器不會失效,仍然指向swap之前所指向的那些元素值(可以理解為跟隨元素的移動而移動),只不過他們所屬的容器已經發生了改變
測試用例:
array<
int,
6> a =
; array<
int,
6> b =
;auto it = a.
begin()
;auto ii = b.
begin()
; cout <<
"a的第乙個是"
<<
*it << endl;
cout <<
"b的第乙個是"
<<
*ii << endl;
swap
(a, b)
; cout <<
"交換後a的第乙個是"
<<
*it++
<< endl;
cout <<
"a的第二個是"
<<
*it << endl;
cout <<
"b的第乙個是"
<<
*ii++
<< endl;
cout <<
"交換後b的第二個是"
<<
*ii << endl;
//實際輸出結果17
7812
以上結果說明,對於array容器,迭代器指標指向的是對應的元素位置,而不是元素值。在swap之後,迭代器仍然指向原先的元素位置,(可以理解為指向固定位置,不隨元素值的改變而變化)。 順序容器迭代器之鄙見
眾所周知當使用乙個容器的insert或者erase函式通過迭代器插入或刪除元素 可能 會導致迭代器失效,因此很多建議都是讓我們獲取insert或者erase返回的迭代器,以便用重新獲取新的有效的迭代器進行正確的操作 view plaincopy to clipboardprint?iter vec....
c 容器演算法迭代器初識 容器演算法迭代器
c 容器演算法迭代器初識 容器演算法迭代器 stl中最常用的為迭代器vector,可以理解為陣列,下面我們將學習如何向這個容器 中插入資料 並遍歷這個容器 容器 vector 演算法 for each 迭代器 vector iteator include include include using ...
c 容器迭代器問題
一 迭代器失效問題 對於節點式容器 map,list,forward list,set 元素的刪除,插入操作會導致指向該元素的迭代器,指標,引用失效,但是其他元素迭代器,指標,引用不受影響 對於順序式容器 vector,string 元素的插入肯定會導致指向該元素以及後面的元素迭代器,指標,引用失效...