无效的迭代器比较
invalid iterator comparison
我编写了这段代码来查找字符串向量 "elements" 中的重复项。保留唯一项目的存储空间,如果在唯一存储空间中找到一个项目,则表示它是重复的:
vector<string> elements;
// "elements" is populated ....
// ...
// Find duplicates:
vector<string> uniqueElements;
for (int i = 0; i < elements.size(); ++i)
{
string name = elements[i];
vector<string>::iterator it = find(uniqueElements.begin(), uniqueElements.end(), name);
if(it != uniqueElements.end()) // ERROR
{
cerr << "Duplicate element " << name << endl;
return false;
}
uniqueElements.push_back(name);
}
在 "elements" 向量中的第二项之后,当重新分配 uniqueElements 容器时,我得到一个
vector iterators incompatible
错误信息。为什么会发生这种情况,因为我在每个循环开始时都得到了新的迭代器。
提前致谢。
感谢您的回复,原来是不同的东西。
在我的原始代码中,我打印的错误是
cerr << "Duplicate element " << name << " at position " << it - elements.begin() << endl;
我省略了确切的打印内容,认为它是无关紧要的,但当然错误是我在不同的向量上使用了迭代器。
抱歉给您带来麻烦。
我编写了这段代码来查找字符串向量 "elements" 中的重复项。保留唯一项目的存储空间,如果在唯一存储空间中找到一个项目,则表示它是重复的:
vector<string> elements;
// "elements" is populated ....
// ...
// Find duplicates:
vector<string> uniqueElements;
for (int i = 0; i < elements.size(); ++i)
{
string name = elements[i];
vector<string>::iterator it = find(uniqueElements.begin(), uniqueElements.end(), name);
if(it != uniqueElements.end()) // ERROR
{
cerr << "Duplicate element " << name << endl;
return false;
}
uniqueElements.push_back(name);
}
在 "elements" 向量中的第二项之后,当重新分配 uniqueElements 容器时,我得到一个
vector iterators incompatible
错误信息。为什么会发生这种情况,因为我在每个循环开始时都得到了新的迭代器。
提前致谢。
感谢您的回复,原来是不同的东西。 在我的原始代码中,我打印的错误是
cerr << "Duplicate element " << name << " at position " << it - elements.begin() << endl;
我省略了确切的打印内容,认为它是无关紧要的,但当然错误是我在不同的向量上使用了迭代器。 抱歉给您带来麻烦。