質問がばかげているなら、我慢してください。
ヘッダーファイルでは、次のように定義されています。
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 ..)
コードはコンパイルされません!
実際には、 it = 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)
なにが問題ですか ?
御時間ありがとうございます。