1、使用流迭代器读取文本文件,存入一个vector中的string里,并用流迭代器和copy输出
#include<iostream>
#include<fstream>
#include<iterator>
#include<vector>
#include<string>
using namespace std;
int main(void)
{
ifstream FILE("1.txt"); //输入流FILE绑定文件1.txt
istream_iterator<string> string_it(FILE); //从FILE输入流中读取string类型
istream_iterator<string> string_eof; //默认构造定义尾后迭代器
//获取输入流FILE中的string类型元素加入vector中
vector<string> string_vt;
while (string_it != string_eof)
string_vt.push_back(*string_it++);
//使用迭代器输出vector中的内容
ostream_iterator<string> os_it(cout," ");
copy(string_vt.begin(), string_vt.end(), os_it); //copy函数拷贝vector到cout流
cout << endl; //输出cout流
system("pause");
return 0;
}
2、使用流迭代器、sort、copy从标准输入读取一个整数序列,将其排序,并将结果写到标准输出
#include<iostream>
#include<iterator>
#include<algorithm>
#include<vector>
using namespace std;
int main(void)
{
istream_iterator<int> int_it(cin);
istream_iterator<int> int_eof;
vector<int> int_vt;
while (int_it != int_eof)
int_vt.push_back(*int_it++);
sort(int_vt.begin(), int_vt.end());
vector<int>::iterator it = unique(int_vt.begin(), int_vt.end());
ostream_iterator<int> int_ot(cout, " ");
copy(int_vt.begin(), it, int_ot);
cout << endl;
system("pause");
return 0;
}
3、一个输入文件和两个输出文件的文件名。输入文件保存整数。将奇数、偶数分别输出至两个输出文件,其中,奇数每个值用空格分开,偶数每个值占一行。
#include<iostream>
#include<iterator>
#include<fstream>
using namespace std;
int main(void)
{
ifstream input("1.txt");
ofstream output_odd("2.txt");
ofstream output_even("3.txt");
istream_iterator<int> int_it(input);
istream_iterator<int> int_eof;
ostream_iterator<int> int_ot_odd(output_odd, " ");
ostream_iterator<int> int_ot_even(output_even, "\n");
while (int_it != int_eof)
{
if ((*int_it) % 2 == 0)
int_ot_even = *int_it++;
else
int_ot_odd = *int_it++;
}
system("pause");
return 0;
}
四、分别使用正向、反向迭代器逆序输出vector
#include<iostream>
#include<vector>
using namespace std;
int main(void)
{
vector<int> vt = { 1,2,3,4,5,6 };
//正向
for (vector<int>::iterator it = --vt.end();; --it)
{
cout << *it << " ";
if (it == vt.begin())
break;
}
cout << endl;
//反向
for (vector<int>::reverse_iterator it = vt.rbegin(); it != vt.rend(); ++it)
cout << *it << " ";
cout << endl;
system("pause");
return 0;
}
五、给定vector10个元素,将位置3到7间的元素按逆序拷贝至一个list中。
#include<iostream>
#include<vector>
#include<list>
#include<iterator>
using namespace std;
int main(void)
{
vector<int> vt = { 12,23,34,45,56,67,78,89,910,1011 };
list<int> lt(vt.rbegin() + 2, vt.rend() - 3);
ostream_iterator<int> ot(cout, " ");
copy(lt.begin(), lt.end(), ot);
cout << endl;
system("pause");
return 0;
}
六、结合lambda表达式使用list(或forward_list)的特定算法merge、sort。
#include<iostream>
#include<list>
#include<iterator>
using namespace std;
int main(void)
{
list<int> lt1 = { 123,234,456,135,68,2135,864,457,32,425,2,3214,452,68,124 };
list<int> lt2 = { 235,421,31,443,5,45,657,76,8,45,43,32,43,658,6,53,1223 };
lt1.sort([](const int &x, const int &y) {return x > y; });
lt2.sort([](const int &x, const int &y) {return x > y; });
lt1.merge(lt2, [](const int &x, const int &y) {return x > y; });
ostream_iterator<int> ot(cout, " ");
copy(lt1.begin(), lt1.end(), ot);
cout << endl;
system("pause");
return 0;
}
来源:CSDN
作者:Zih_An
链接:https://blog.csdn.net/HANZY72/article/details/104182466