10.29:使用流迭代器读取文本文件,存入 vector<string> 里面
#include "bits/stdc++.h"
using namespace std;
int main() {
ifstream fin("a.txt");
istream_iterator<string> in(fin), eof;
vector<string> v;
copy(in, eof, back_inserter(v));
ostream_iterator<string> out(cout, "\n");
copy(v.cbegin(), v.cend(), out);
return 0;
}
10.30:使用流迭代器、sort、copy 从标准输入读取一个整数序列,排序后输出
#include "bits/stdc++.h"
using namespace std;
int main() {
istream_iterator<int> iin(cin), eof;
vector<int> v;
copy(iin, eof, back_inserter(v));
sort(v.begin(),v.end());
ostream_iterator<int> iout(cout," ");
copy(v.cbegin(),v.cend(),iout);
return 0;
}
10.31:修改上一题,使其打印不重复元素。程序应该使用 unique_copy
#include "bits/stdc++.h"
using namespace std;
int main() {
istream_iterator<int> iin(cin), eof;
vector<int> v;
copy(iin, eof, back_inserter(v));
sort(v.begin(),v.end());
ostream_iterator<int> iout(cout," ");
unique_copy(v.begin(),v.end(),iout);
return 0;
}
10.33:读入一个 int 文件,使用 istream_iterator 读取,ostream_iterator 写入。分别将奇数、偶数写入不同的文件
#include "bits/stdc++.h"
using namespace std;
void solve(const string &ifile, const string &outfile1, const string &outfile2) {
ifstream fin(ifile);
istream_iterator<int> in(fin), eof;
ofstream fout1(outfile1);
ofstream fout2(outfile2);
ostream_iterator<int> out1(fout1," ");
ostream_iterator<int> out2(fout2," ");
for_each(in, eof,
[&out1,&out2](const int x) { x % 2 ? *out1 ++ = x : *out2 ++ = x; });
}
int main() {
string ifile,outfile1,outfile2;
cout << "input in-filename: "; cin >> ifile;
cout << "input out-filename1: "; cin >> outfile1;
cout << "input out-filename2: "; cin >> outfile2;
solve(ifile, outfile1, outfile2);
return 0;
}