从Java和使用ArrayList类的尝试学习C++等价物(Vectors)时,我都感到沮丧。从元素中删除元素而不删除元素后
我正在写一个函数,删除一个int整数的整数。有一段时间我无法弄清楚它为什么会导致分段错误。看完文档后,我意识到.erase在删除之后也会删除任何元素。这绝对不是我想要做的,所以我有点迷路了,我将如何去除矢量中的一个元素而不去除元素。
功能,我现在有这将导致分段错误:
void remove(int n){
for(int a=0; a<list.size(); a++){
if(list.at(a)==n){
list.erase (list.begin()+(n-1));
cout << n << " has been erased" << endl;
break;
}
}
}
从你的例子中假设你只希望发生一次'n',那么你可能要考虑使用std :: set而不是vector。在这种情况下,您只需要一条语句即可从集合中移除元素 - 'set.erase(n);'。当然,如果你有多个事件,那么你需要一个列表或向量。 – 2012-01-30 20:34:40