遍历
题目描述
实现函数模板 void forEach(It begin, It end, F f);
。其中,It
是迭代器,记其指向的元素类型为 T
;F
应当是可调用类型,以 f(e);
的形式作用在 T
类型元素 e
上。
该函数的效果是:对于 begin
和 end
所指代的范围中的每一个元素,依次作用 f
于其上。
关于输入
无
关于输出
见样例输出
参考答案
#include <deque>
#include <forward_list>
#include <iostream>
template <typename It, typename F>
void forEach(It begin, It end, F f) {
for (; begin != end; ++begin) {
f(*begin);
}
}
int main() {
std::forward_list<int> fl = {1, 2, 3, 4, 5, 6};
std::deque<int> d;
auto printInt = [](int i) { std::cout << i << " "; };
forEach(fl.begin(), fl.end(), [&](int i) { d.push_back(i); });
forEach(d.begin(), d.end(), printInt);
std::cout << std::endl;
int odds[]{1, 3, 5};
forEach(odds, odds + 3, [&](int i) { d[i] *= 2; });
forEach(d.begin(), d.end(), printInt);
}