我正在C++中進行練習,我正試圖理解如何從列表中移除一個元素,並將其餘部分移到左側。我想知道是否有一個整潔的解決方案。這裏是我的版本,似乎做的工作,但我有一種感覺,有一種更好的方法:從C++列表中刪除元素
Account AccountList::remove(int i){
if(i>=0 && i<size()) {
for (int n = i; n < size(); n++) {
if(i+1!=size()) {
aList[n]=aList[n+1];
}
}
sz--;
return aList[i];
} else {
return Account();
}
}
列表不需要是鏈接列表。使用數組作爲後端結構是可以接受的。 – 2012-07-29 18:59:07
即使假設'List'只能表示一個鏈表(爲什麼,[skiplist](http://en.wikipedia.org/wiki/Skiplist)或[arraylist](http:// en.wikipedia.org/wiki/Arraylist)?)由於O(n)查找,鏈表不會因爲任意元素而刪除O(1)。 – Grizzly 2012-07-29 19:02:56
@Grizzly是的,但我假設你已經有一個指向正在被刪除的節點的指針。在這種情況下,它將是'begin()+ n'。 – 2012-07-29 19:03:39