C vector迭代器及用法

2021-10-07 04:36:00 字數 856 閱讀 1404

vector 容器的迭代器是隨機訪問迭代器。當然,也可以通過全域性函式獲取它們。vector 有成員函式 push_back(),所以能夠通過使用 back_insert_iterator 來新增新的值。

從前面章節了解到,可以通過呼叫全同的 back_inserter() 函式來獲取乙個後向插入迭代器。無法在 vector 容器中使用 front_insert_iterator,這需要 vector 有成員函式 push_front(),但是 vector 容器並沒有定義這個函式。

可以通過演示如何用 copy() 演算法來新增元素,向你展示怎樣在 vector 中使用後向插入迭代器。copy() 的頭兩個引數是兩個迭代器,指定了複製元素的範圍,第三個引數指定了這些元素存放的位置。頭兩個引數要求是輸入迭代器,所以可以接受任何其他類別的迭代器;顯然第三個引數必須是乙個輸出迭代器。這裡有乙個示例:

std::vector data ;

std::cout << 「enter additional data values separated by spaces or ctrl+z to end:」 << std::endl;

std::copy(std::istream_iterator(std::cin) , std::istream_iterator(),std::back_inserter(data));

std::copy(std::begin(data), std::end(data),std::ostream_iterator (std:: cout," "))

用初始化列表生成 data 容器。第一次呼叫 copy() 時,使用乙個 istream_iterator 物件作為第乙個引數,它能夠從標準輸入流中讀取 double 型別的值。第二個引數是乙個流的結束迭代器,

C vector 迭代器失效原因

眾所周知,vector在記憶體中是順序儲存的,那麼當vector的長度增加時,也就是往裡面繼續pushback新的資料,當前塊的記憶體不夠,vector不得不重新申請一塊新的更大的記憶體,然後把之前的資料複製過來,再插入新的資料。為了驗證這個可以看看下面的測試 上面的 非常簡單,都是在插入乙個新的資...

C vector反向迭代器的使用

反向迭代器其實沒什麼特殊的,他只是在遍歷的方向上和普通迭代器不通而已 每乙個容器裡面都有iterator 迭代器 可以從容器的begin位置到end 1位置,通過 來遍歷。同樣也有個反向迭代器reverse iterator,從rbegin end 到rend begin 1 反向遍歷,仍然通過 來...

C vector總結(迭代器失效深度討論)

vector的定義 建構函式宣告 介面說明 vector 重點 無參構造 vector size type n,const value type val value type 構造並初始化n個val vector const vector x 重點 拷貝構造 vector inputiterator...