#include "stdafx.h"
#include
#include
#include
#include
#include
/** 演算法庫對所有在容器上的操作有個承諾:決不修改容器的大小(不插入、不刪除)。
* 有了插入迭代器,既使得演算法庫可以通過迭代器對容器插入新的元素,又不違反這一承諾,即保持了設計上的一致性。
*/using
namespace
std;
int main()
; list
listint;
//向後插入迭代器,內部呼叫push_back
back_insert_iterator backiter(listint);
*backiter = 30;
//copy演算法中的 運用
copy(vint.begin(), vint.end(), back_insert_iterator(listint));
for (auto iter = listint.begin(); iter != listint.end(); ++iter)
cout
<< endl;
//向前插入迭代器,內部呼叫push_front
front_insert_iterator frontiter(listint);
*backiter = 30;
//copy演算法中的 運用
copy(vint.begin(), vint.end(), front_insert_iterator(listint));
for (auto iter = listint.begin(); iter != listint.end(); ++iter)
cout
<< endl;
//在第三個元素的位置插入元素
auto iter = listint.begin();
int pos = 3; //獲取位置
while (--pos)
//獲取插入迭代器
auto iiter = insert_iterator(listint,iter);
*iiter = 35;
for (auto iter = listint.begin(); iter != listint.end(); ++iter)
cout
<< endl;
return
0;}
C STL 迭代器失效
2 刪除 當進行刪除操作 erase,pop back 後,指向刪除點的迭代器全部失效 指向刪除點後面的元素的迭代器也將全部失效。刪除點之前的迭代器仍有效。二 deque迭代器的失效情況 1 插入 1 在deque容器首部或者尾部插入元素不會使得任何迭代器失效。但是指向存在的元素的引用和指標不會失效...
C STL迭代器失效
迭代器失效就是說,對容器進行了一些操作後,先前的迭代器無法進行解引用操作去訪問容器的元素。迭代器失效可能會造成程式崩潰,如下圖 如果插入元素導致vector達到最大容量,那麼會重新分配記憶體並將老的元素拷貝到新的記憶體中。元素的位址都改變了,顯然迭代器和引用都將失效 如果插入元素沒有引起重新分配記憶...
C STL之迭代器
迭代器除了在stl中遍歷序列物件外,還有其他更多的迭代器被iterator所定義。iterator標頭檔案定義迭代器的幾個模板將資料從源傳到目的地。流迭代器 stream iterator 作為指向輸入或輸出流的指標,它們可以用來在流和任何使用迭代器的源或目的地之間傳輸資料,如演算法。插入迭代器 i...