在这里,我们将看到C ++中的Output迭代器。输出迭代器具有一些属性。这些如下所示:
输出迭代器用于修改容器的值。
我们无法使用这种迭代器从容器读取数据
这是单向且仅写迭代器
可以增加,但不能减少。
输出迭代器有两个子部分。这些是插入迭代器和ostream迭代器。
插入迭代器用于在容器内插入一些元素。这种迭代器上的赋值运算符会在当前位置插入新元素。插入迭代器的语法如下:
template<class Container, class Iterator> insert_iterator<container> inserter(Container &x,Iterator it);
该迭代器采用两个参数x和它。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<<"vec1的元素是:"; for ( it = vec1.begin(); it!= vec1.end(); ++it ) cout << ' ' << *it; cout << endl; return 0; }
输出结果
vec1的元素是: 1 2 3 4 5 4 5 6 7 8 9 10 11 12 13 6 7 8 9 10
ostream迭代器用于像cout一样写入输出流。可以使用basic_ostream对象创建ostream迭代器。当将赋值运算符与这种类型的迭代器一起使用时,它会将新元素插入输出流。语法如下。
template<class T, class charT=char, class traits=char_traits<charT>> class ostream_iterator;
ostream迭代器类的成员函数如下。
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。这是将插入的元素的类型,图表,ostream可以处理的元素的类型和特征。这些是可由流处理的字符特征。
#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,