迭代器被繫結到乙個容器上,可用來向容器插入元素。
back_inserter
建立乙個使用push_back
的迭代器
front_inserter
建立乙個使用push_front
的迭代器
inserter
建立乙個使用insert
的迭代器,此函式接受哦第二個引數,這個引數必須是指向乙個給定容器的迭代器。元素將被插入到給定迭代器所表示的元素之前。
list
lst = ;
list
lst1, lst2; //空list
//拷貝完成之後,lst1包含4 3 2 1
copy(lst.begin(), lst.end(), front_inserter(lst1));
//拷貝完成之後,lst2包含1 2 3 4
//inserter和back_inserter不會使插入元素序列顛倒
copy(lst.begin(), lst.end(),inserter(lst2,lst2.begin()));
迭代器被繫結到輸入或輸出流上,可用來遍歷所關聯的io流。使用需要包含
ifstream in("afile");
istream_iterator str_it(in); //從"afile"讀取資料
istream_iterator in_iter(cin); //從cin讀取int
istream_iterator eof //預設初始化,生成istream尾後迭代器
while (in_iter != eof)
更妙的用法:
istream_iterator in_iter(cin);
istream_iterator eof;
vector
vec(in_iter, eof);
這個建構函式從cin中讀取資料,直到遇到檔案尾或者遇到乙個不是int的資料為止。從流中讀取的資料被用來構造vec。
兩種建構函式:
//out將型別為t的值寫入到輸出流os中
ostream_iteratorout(os);
//out將型別為t的值寫入到輸出流os中,每個值後面都輸出乙個d
ostream_iteratorout(os, d);
使用ostream_iterator輸出值的序列的三種方式:
ostream_iterator out_iter(cout, " ");
for (auto& e : vec)
cout
《或ostream_iterator out_iter(cout, " ");
for (auto& e : vec)
cout
《或ostream_iterator out_iter(cout, " ");
copy(vec.begin(), vec.end(), out_iter);
練習題
編寫程式,接受三個引數,乙個輸入檔案和兩個輸出檔案的檔名。輸入檔案儲存整數。使用istream_iterator讀取輸入檔案,使用ostream_iterator將奇數寫入第乙個輸出檔案,每個值後面都跟乙個空格;將偶數寫入第二個輸出檔案,每個值都獨佔一行。
解題**
//#include
#include
#include
using
namespace
std;
int pro(const
char* ch1, const
char* ch2, const
char* ch3);
int main()
int pro(const
char* ch1, const
char* ch2, const
char* ch3)
else
}}
反向迭代器就是在容器中從尾元素向首元素反向移動的迭代器。對於反向迭代器,遞增和遞減操作的含義會點到過來。除了forward_list
之外,其他容器都支援反向迭代器。這些成員函式返回指向容器尾元素和首元素之前乙個位置的迭代器。
sort(vec.begin(), vec.end()); //正常排序vec,從小到大
sort(vec.rbegin(), vec.rend()); //逆序排序,從大到小
列印string物件中的單詞:
string line = "one,two,three";
//輸出第乙個單詞
auto comma = find(line.cbegin(), line.cend(), ',');
cout
cout <這些專用的迭代器不是拷貝其中的元素,而是移動它們。 除了為每個容器定義的迭代器以外,標準庫在標頭檔案iterator中還定義了額外4種迭代器 插入迭代器 流迭代器 反向迭代器 移動迭代器 插入器是一種迭代器介面卡,接受乙個容器,生成乙個插入迭代器 vector vi auto it back inserter vi back inserter是插入器... 除了為每個容器定義的迭代器之外,標準庫在標頭檔案iterator中還定義了額外幾種迭代器,包括 1 插入迭代器 insert iterator 被繫結到乙個容器上,可用來向容器插入元素。2 流迭代器 stream iterator 被繫結到輸入輸出流,可用來遍歷所關聯的io流。3 反向迭代器 rev... 我們知道,迭代器常用來訪問容器中的元素。在使用迭代器的方式上來看,和指標非常的類似,甚至於就已經當作指標來使用了。事實上,迭代器的作用就是為了提供一種訪問資料的方式。容器 container 作為標準模板庫中的乙個核心內容,給我們提供了非常強大的資料結構的支援,以便於我們能夠更加方便 高效的實現我們...再探迭代器
STL之迭代器
STL之迭代器