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,
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP