练习3.1
#include
#include
#include
#include
#include
#include
练习3.2
#include
#include
#include
#include
#include
#include
练习3.3
#include
#include
#include
#include
练习3.4
#include
#include
#include
#include
#include
int main() {
// 定义输入流
std::istream_iterator is(std::cin);
// 出入eof结束
std::istream_iterator eof;
std::vector numbers;
std::copy(is, eof, std::back_inserter(numbers));
std::vector odd_numers;
std::vector even_numbers;
for (int number : numbers) {
if (number % 2 == 0) {
even_numbers.push_back(number);
} else {
odd_numers.push_back(number);
}
}
// 分两个流写出文件
// 注意这里是ofstream 不是 ostream ...
// 共有三层关系
// 1. 定义一个 out-file-stream , 往哪里写
std::ofstream os_odd("odd_numbers.file");
std::ofstream os_even("even_numbers.file");
// 2. 定义一个 ostream_iterator , 怎么写
std::ostream_iterator os_odd_iter(os_odd, " ");
std::ostream_iterator os_even_iter(os_even, " ");
// 3. 定义一个 copy, 用什么数据写
std::copy(odd_numers.begin(), odd_numers.end(), os_odd_iter);
std::copy(even_numbers.begin(), even_numbers.end(), os_even_iter);
return 0;
}
这一章课后题还是比较简单, 但是我觉得有些东西还是需要花一定的时间去理解的, 主要就是指"如何设计一个泛型算法"那里, 一步一步的由一个普通的定制化的函数, 通过引入函数指针
, find_if()泛型算法
, function object
, function object adapter
来设计成为一个元素无关
, 比较操作符无关
, 容器类型无关
的泛型算法函数, 值得反复阅读。