C STL迭代器 插入迭代器

2021-08-10 20:59:50 字數 1266 閱讀 5281

#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...