C++ で非常に奇妙なセット イテレータの問題が発生しました。
set<string> dict;
dict.insert("hello");
dict.insert("my");
int maxLen = INT_MIN;
set<string>::iterator itr;
for (itr=dict.begin(); itr!=dict.end(); itr++) {
int len = (*itr).length();
if ( len > maxLen )
maxLen = (*itr).length();
}
このコードは、単語セット内の最長の単語の長さである maxLen を 5 に設定するのに役立ちます。
set<string> dict;
dict.insert("hello");
dict.insert("my");
int maxLen = INT_MIN;
set<string>::iterator itr;
for (itr=dict.begin(); itr!=dict.end(); itr++) {
if ( (*itr).length() > maxLen )
maxLen = (*itr).length();
}
ただし、このコードでは正しい結果が得られません。コードを実行した後、maxLen は INT_MIN の値のままです。(*itr).length() の値を保持するために変数を使用しないこと以外は、基本的に何も変わりません。
これは私にとって非常に奇妙です。何か不足していますか?イテレータの使用に関する疑問を明確にしたいだけです。
どうもありがとう!