宿題の一環として、マップ内の各文字の出現をマップすることになっています。この関数は、std :: for_eachを使用して、評価する文字を渡すことになっています。
私の機能は次のとおりです。
std::for_each(document_.begin(),
document_.end(),
std::mem_fun(&CharStatistics::fillMap));
document_
は、string
であり、fillMap関数は次のように定義されます。
void CharStatistics::fillMap(char ch)
{
ch = tolower(ch);
++chars_.find(ch)->second;
}
chars_
として宣言されstd::map<char, unsigned int> chars_;
ます。
これはうまくいくはずだと思いますが、コンパイラは文句を言っています
error C2064: term does not evaluate to a function taking 1 arguments
引数リストを見ると混乱します
_Fn1=std::mem_fun1_t<void,CharStatistics,char>,
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Alloc=std::allocator<char>,
1> _Result=void,
1> _Ty=CharStatistics,
1> _Arg=char,
1> _InIt=std::_String_iterator<char,std::char_traits<char>,std::allocator<char>>
それは私にはうまく見えます。_Elemはcharであり、私の関数はcharを受け入れます。イテレータは他の何物でもありませんchar *
私は何が間違っているのですか?