如果問題很愚蠢,請耐心等待。Std迭代器賦值錯誤
下面是一個頭文件中定義:
typedef char NAME_T[40];
struct NAME_MAPPING_T
{
NAME_T englishName;
NAME_T frenchName;
};
typedef std::vector<NAME_MAPPING_T> NAMES_DATABASE_T;
後來需要配備一個特定的英文名稱中找到:
const NAMES_DATABASE_T *wordsDb;
string str;
std::find_if( wordsDb->begin(),
wordsDb->end(),
[str](const NAME_MAPPING_T &m) -> bool { return strncmp(m.englishName, str.c_str(), sizeof(m.englishName)) == 0; });
該代碼(這是我複製粘貼要誠實)編譯,但如果我想檢查由find_if()返回的值,如下所示:
NAMES_DATABASE_T::iterator it;
it = std::find_if(blah ..)
代碼不會編譯!
實際上 吧=的std :: find_if(...) 將返回錯誤的行:
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::_Vector_const_iterator<_Myvec>' (or there is no acceptable conversion)
有什麼不對?
謝謝你的時間。
是否有使用char數組而不是std :: string的原因? – 2012-07-06 06:52:09