從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