我已经编写了这段代码来查找字符串向量“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”向量中的第2个项目之后,当重新分配uniqueElements容器时,我得到了一个
vector iterators incompatible
错误消息。为什么会发生这种情况,因为我在每个循环开始时都会获得新的迭代器。
提前致谢。
答案 0 :(得分:0)
感谢您的回复,结果证明这是不同的。 在我的原始代码中,我正在打印的错误是
cerr << "Duplicate element " << name << " at position " << it - elements.begin() << endl;
我省略了确切的打印内容,认为它无关紧要,但当然错误是我在不同的向量上使用迭代器。 抱歉,麻烦。