class AddValue{
private:
int theValue;
public:
AddValue (const int& v):theValue(v){
}
void operator() (pair<string,float>& elem) const{
elem.second += theValue;
}
};
int main()
{
typedef map<string,float> StringFloatMap;
StringFloatMap stocks;
stocks["BASF"]=369.50;
stocks["VW"]=819.00;
for_each(stocks.begin(),stocks.end(),AddValue(10));
}
编译器报出的错误是不能将cannot convert parameter 1 from 'std::pair<_Ty1,_Ty2>' to 'std::pair<_Ty1,_Ty2>&'
看了这个我真是摸不到头脑啊,其实呢,原因是应该改成
void operator() (pair<const string,float>& elem) const{
因为map的key不能改