숙제의 일부로지도의 각 문자 발생을 매핑해야합니다. 우리 함수는 std :: for_each를 사용하여 평가할 문자를 전달해야합니다.STL for_each가 인수 목록에 대해 불평 함
std::for_each(document_.begin(),
document_.end(),
std::mem_fun(&CharStatistics::fillMap));
document_
가 string
이며, fillMap 기능은 std::map<char, unsigned int> chars_;
로 선언
void CharStatistics::fillMap(char ch)
{
ch = tolower(ch);
++chars_.find(ch)->second;
}
chars_
과 같이 정의된다 :
내 기능입니다.
나는이 일을해야 내려고하지만, 컴파일러는 내가 인수 목록_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>>
가 나에게 잘 보이는 볼 때 때문에, 저를 혼란
error C2064: term does not evaluate to a function taking 1 arguments
불평한다. _Elem은 char이고 my 함수는 char을 허용합니다. 이터레이터는 A 이외에는 없습니다. char *
내가 뭘 잘못하고 있니?
bind2nd는 당신이 쓴 것은 부스트 :: 바인드 또는 표준 : : 바인드 (새로운 표준) 건설이다, 그렇게하지 것이다. bind2nd는 함수와 매개 변수라는 두 개의 매개 변수 만 사용하기 때문에 컴파일러 오류가 발생합니다. – CashCow
@CashCow : 아, 당신 말이 맞아요. 나는 항상 boost :: bind를 사용한다. 편집 됨. –