C++中的輸出迭代器
在這裡,我們將瞭解C++中的輸出迭代器。輸出迭代器具有一些特性,如下所示:
- 輸出迭代器用於修改容器的值。
- 我們無法使用此類迭代器從容器讀取資料。
- 這是一種單向且只寫迭代器。
- 它可以遞增,但不能遞減。
- 輸出迭代器有兩個子部分。它們是插入迭代器和輸出流迭代器。
插入迭代器
插入迭代器用於在容器中插入一些元素。此類迭代器上的賦值運算子會在當前位置插入新元素。插入迭代器的語法如下所示:
template<class Container, class Iterator> insert_iterator<container> inserter(Container &x,Iterator it);
此迭代器接受兩個引數,x 和 it。x 是迭代器將作用於的容器。第二個引數是一個迭代器物件,它指向要修改的位置。
示例程式碼
#include <iostream> #include <iterator> #include <vector> #include <algorithm> using namespace std; int main () { vector<int> vec1,vec2; for (int i=1; i<=10; i++) { //insert elements into vectors vec1.push_back(i); vec2.push_back(i+3); } vector<int>::iterator it = vec1.begin(); //iterator works on vector1 advance (it,5); //advance it to 5 position copy (vec2.begin(),vec2.end(),inserter(vec1,it)); cout<<"Elements of vec1 are :"; for ( it = vec1.begin(); it!= vec1.end(); ++it ) cout << ' ' << *it; cout << endl; return 0; }
輸出
Elements of vec1 are : 1 2 3 4 5 4 5 6 7 8 9 10 11 12 13 6 7 8 9 10
輸出流迭代器
輸出流迭代器用於寫入輸出流,例如 cout。輸出流迭代器可以使用 basic_ostream 物件建立。當此類迭代器使用賦值運算子時,它會將新元素插入輸出流。語法如下所示。
template<class T, class charT=char, class traits=char_traits<charT>> class ostream_iterator;
輸出流迭代器類的成員函式如下所示。
ostream_iterator<T, charT, traits>& operator=(const T& value); ostream_iterator<T, charT, traits>& operator*(); ostream_iterator<T, charT, traits>& operator++(); ostream_iterator<T, charT, traits>& operator++(int);
引數為:T。這是要插入的元素的型別,chart,這是 ostream 可以處理的元素的型別,以及 traits。這些是流可以處理的字元特性。
示例程式碼
#include <iostream> #include<iterator> #include<vector> #include<algorithm> using namespace std; main() { vector<int> vector; for(int i=1;i<=10;i++) vector.push_back(i*i); //make square and insert ostream_iterator<int> out(cout,","); copy(vector.begin(),vector.end(),out); }
輸出
1,4,9,16,25,36,49,64,81,100,
另一個例子,
示例程式碼
#include <iostream> #include<iterator> #include<vector> #include<algorithm> using namespace std; main() { ostream_iterator<int> os_out(cout,","); *os_out = 10; os_out++; //point to next *os_out = 20; os_out++; *os_out = 30; }
輸出
10,20,30,
廣告