标准库里for_each()函数

使用一个东西,不明白它的道理,不高明
——侯捷老师

for_each()函数

功能:对序列里的每一个元素进行指定操作

1. 函数声明

template
  Function for_each(InputIterator first, InputIterator last, Function fn);

2. 等价操作实现

template
  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 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. 参考链接

http://www.cplusplus.com/reference/algorithm/for_each/

8.知识点补充

  • struct结构、typedef

https://blog.csdn.net/huqinwei987/article/details/23625823

你可能感兴趣的:(标准库里for_each()函数)