使用一个东西,不明白它的道理,不高明
——侯捷老师
for_each()函数
功能:对序列里的每一个元素进行指定操作
1. 函数声明
template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function fn);
2. 等价操作实现
template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function fn) {
while (first != last) {
fn(*first);
++first;
}
return fn;
}
3. 参数详解
- first,last
区间表示[first, last)
- fn
一元函数,可以是函数指针或者函数对象
4. 返回值——不重要
Returns fn, as if calling std::move(fn)
5. 应用实例
void myfunction(int i) { // function
std::cout << ' ' << i;
}
struct myclass { // function object type
void operator() (int i) {
std::cout << " " << i;
}
} myobject;
test_for_each() {
vector<int> vec;
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
cout << "vec contains: ";
std::for_each(vec.begin(), vec.end(), myfunction);
cout << endl;
cout << "vec contains: " ;
std::for_each(vec.begin(), vec.end(), myobject);
cout << endl;
}
};
6. 输出结果
image.png
7. 参考链接
8.知识点补充
- struct结构、typedef