對於vector中高效刪除中間元素的技巧

2022-02-02 07:58:04 字數 396 閱讀 6864

眾所周知,vector是連續儲存空間,只提供高效的尾部刪除方法pop_back() ,在中間刪除的效率很低,那麼如果大家想快速刪除中間元素該如何實現?

話不多說,看**:

//

移除vector元素,最後乙個填充。

templateinline

void listremoveat(vector&list, size_t idx)

我們的思路是:

如果想刪除第二個元素,那麼我們只需要將第二個元素填充為末尾元素,此刻就相當於把第二個元素刪除了,但是此時尾部元素有兩個, 所以我們需要把尾部元素刪除(非常高效pop_back() ),這樣的一套組合拳,就高效刪除了vector中任意乙個元素,當然,這種技巧適合於你對於元素的順序無要求 !!!

vector中的元素刪除

在vector中用迭代器刪除元素會用到erase 函式。這個函式返回的是刪除當前元素後下乙個元素的指標,也就是說在刪除元素後,指標指向刪除元素後面的那個,具體用法參考下面 vector iterator itin inliers.begin vector iterator itm matches.b...

vector刪除連續的元素

這個是在一次面試時候問的,刪除vector中的乙個指定元素 剛開始是這樣的,刪除vector中的乙個等於target的元素,我一想不就是這個,多簡單,上手就是寫個這。結果,我艹直接死迴圈 一臉尷尬,多麼簡單的題 然後調了一會,沒調出來 我是忽略了erase的返回值了,erase返回刪除當前元素的下乙...

vector中特定元素的刪除

std vector沒有直接刪除特定值元素的成員方法。所以必須使用remove演算法 std vectorcoll remove all elements with value val coll.erase remove coll.begin coll.end val coll.end remove...