在vector中刪除乙個元素

2021-06-19 22:20:44 字數 912 閱讀 6413

例如:

class classa

vector; class_vector;

如果要刪除第三個,似乎只能按著下面這個方式進行

class_vector.erase(&class_vector[2]);

這種方法太麻煩了比如我要刪最後乙個

class_vector.erase(&class_vector[class_vector.size()-1]);

>> 如果要刪除第三個,似乎只能按著下面這個方式進行

>> class_vector.erase(&class_vector[2]);

&class_vector[2] 的型別是指標,而上述 vector 的 erase 成員函式要求的引數型別是 iterator,兩者的型別並不一定相容,所以你的上述用法對於大多數的編譯器來說都是不成立的。

根據 vector 的特點,刪除其中間的元素沒有什麼捷徑(不提供按下標刪除元素的方法。對於 vector 一般要盡量避免刪除中間的元素)。不過,對於刪除最後乙個元素,vector 提供了非常簡潔的方式,並且實現效率也非常高,這就是 pop_back () 操作。

#include

using namespace std;

void main(void) }

//若是最後乙個可用array.pop_back()

刪除所有偶數項,並列印出刪除的項

1. vector/queue

正確方法1:

void erase(vector&v)

else ++vi;}}

正確方法2:

void erase2(vector&v)

else ++ri;}}

2.map/list

正確方法

void erase(map&m)

else ++mi;}}

vector中刪除乙個元素

例如 class classa vector class vector 如果要刪除第三個,似乎只能按著下面這個方式進行 class vector.erase class vector 2 這種方法太麻煩了比如我要刪最後乙個 class vector.erase class vector class ...

vector中的元素刪除

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

刪除vector中重複元素

演算法unique能夠移除重複的元素。每當在 first,last 內遇到有重複的元素群,它便移除該元素群中第乙個以後的所有元素。注意 unique只移除相鄰的重複元素,如果你想要移除所有 包括不相鄰的 重複元素,必須先將序列排序,使所有重複元素都相鄰。unique會返回乙個迭代器指向新區間的尾端,...