小编sev*_*bit的帖子

c ++ operator()行为

考虑一下,我使用std :: for_each和带有重载operator()的对象来累积一些有关向量内容的数据:

#include <iostream>
#include <vector>
#include <algorithm>

struct A{
    int a;
    A(): a(0){}

    void operator()(int i) {
        if(i)   a++;
        std::cout << "a:" << a << std::endl;
    }
};

int main(int argc, char *argv[]) {
    //test data
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(1);
    vec.push_back(0);

    //accumulator
    A accum;

    std::for_each(vec.begin(), vec.end(), accum);
    std::cout << "non-zero elements:" << accum.a << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

a:1
a:2
a:2
non-zero elements:0
Run Code Online (Sandbox Code Playgroud)

为什么是non-zero elements0?

c++ c++-standard-library

2
推荐指数
1
解决办法
151
查看次数

标签 统计

c++ ×1

c++-standard-library ×1