我在 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() 的值。
这对我来说很奇怪。我错过了什么吗?我只是想澄清我对迭代器使用的怀疑。
非常感谢!