遍历

题目描述

实现函数模板 void forEach(It begin, It end, F f);。其中,It 是迭代器,记其指向的元素类型为 TF应当是可调用类型,以 f(e); 的形式作用在 T 类型元素 e 上。

该函数的效果是:对于 beginend 所指代的范围中的每一个元素,依次作用 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);
}