使用两个迭代器比较类 vector 中元素的最有效和最快的方法是什么?该 vector 不是可排序的 vector ,我有一个重载的“>”运算符用于该类。我使用 boost foreach 进行简单的 vector 迭代。
我正在做与下面给出的类似的事情。
vector<TestClass*> vec;
vector<TestClass*>::iterator jIter;
bool isErased=false;
vector<TestClass*>::iterator iIter = vec.begin();
if(!vec.empty()){
while(iIter < vec.end()-1) {
isErased = false;
for (jIter = iIter+1; jIter < vec.end();jIter++) {
if((*(*iIter))<=(*(*jIter))) {
delete *jIter;
jIter = vec.erase(jIter);
jIter--;
}
else if((*(*iIter))>=(*(*jIter))) {
delete *iIter;
iIter = vec.erase(iIter);
isErased = true;
break;
}
}
if(!isErased) iIter++;
}
谢谢。
最佳答案
最棘手的部分是避免遇到无效的迭代器:
v.erase(std::remove_if(v.begin(), v.end(), [j](T const &i) { return i > j; });
您也可以使用循环,但在那种情况下使用反向迭代器
PS:我无法理解您实际上想要在您的算法中实现什么
你可能感兴趣
关于c++ - 比较 vector 中元素的最有效和最快的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13612677/