插入迭代器有三種型別:
back_inserter : 建立乙個使用push_back的迭代器,總是插入到容器最後乙個元素之後。
front_inserter : 建立乙個使用push_front的迭代器,總是插入到容器第乙個元素之前。
inserter : 建立乙個使用inset的迭代器,此函式接受第二個引數,必須是乙個指向給定容器的迭代器,插入到給定迭代器之前。
假定 it = inserter (c,iter) ,則
*it = val;
等同於:
it = c.insert (it ,val);
++ it ;
istream_iterator操作
例如從cin中讀取操作。
istream_iterator int_iter(cin),eof; //從cin讀取int,eof為尾後迭代器
while(int_iter != eof)
vec.push_back(*in_iter++);
更簡易的迴圈可以用構造完成
vectorvec(in_iter,eof);
ostream_iterator操作
用其輸出值的佇列。
ostream_iteratorout_iter(cout," "); //每次輸出時後面加乙個空格
for(auto e:vec)
*out_iter++=e; //賦值語句實為寫出,*和++實際並不會做任何操作
可以使用copy來更簡單的實現:
copy(vec.begin,vec.end,out_iter);
C 迭代器之 反向迭代器
反向迭代器 reverse iterator 是普通迭代器的介面卡,通過重新定義自增和自減操作,以達到按反序遍歷元素的目的。如果在標準演算法庫中用反向迭代器來代替普通的迭代器,那麼執行結果與正常情況下相反。除此之外,其用法與普通迭代器完全一樣,我們不作詳細討論。這裡主要討論的是反向迭代器的乙個很特殊...
C 迭代器 迭代器失效問題
問題描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。這是劍指offer上的一道經典習題,我們首先可以想到的解決方案是 再建立乙個臨時陣列把偶數先存放起來,然後把臨時空間的...
C 迭代器(STL迭代器)iterator詳解
要訪問順序容器和關聯容器中的元素,需要通過 迭代器 iterator 進行,迭代器是乙個變數,相當於容器和操作容器的演算法之間的中介。迭代器可以指向容器中的某個元素,通過迭代器就可以讀寫它指向的元素。從這一點上看,迭代器和指標型別。迭代器按照定義方式分為以下四種 正向迭代器,定義方式 容器類名 it...