std::map
as constへの参照を渡すと [] 演算子が壊れる理由はありますか? const を使用すると、次のコンパイラ エラー (gcc 4.2) が発生します。
エラー: 'map[name]' の 'operator[]' に一致しません</p>
関数のプロトタイプは次のとおりです。
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
const
また、の前のキーワードを削除しても問題ありませんstd::map
。
私が正しく指示されていれば、キーが見つからない場合、[] 演算子は実際に新しいペアをマップに挿入します。これはもちろん、これが起こる理由を説明しますが、これが実際に起こるとは想像できません。許容される動作。
[] の代わりにfindを使用するなど、より良い方法があれば、それをいただければ幸いです。ただし、find が機能しないようです... const不一致の反復子エラーが発生します。