1

现在我正在学习 STL (C++)。

在下一个代码中,我有一个带有整数元素 [0;110) 的向量,我想计算向量元素的数量是否可以被 25 整除而没有余数。

运行程序后,我会看到下一个输出:
1
2
3
4
5
Counter: 0

为什么是0?

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

class dividesby
{
int counter;    
public:

int getCounter(){return counter;}
dividesby():counter(0){}
void operator ()(int i)
{
    if(i%25==0)
    {
        counter++;
        std::cout<<"\n"<<counter<<"\n";
    }
}
};

void main()
{
using namespace std;
vector <int> v;
for(int i=0;i<110;i++)
{
    v.push_back(i);
}
dividesby D;
for_each(v.begin(),v.end(),D);
cout<<"Counter: "<<D.getCounter()<<"\n";
}
4

1 回答 1

3

因为for_each它的最后一个参数是值,而不是引用

做这个:

D = for_each(v.begin(),v.end(),D);
于 2013-05-25T09:59:30.133 回答