所以假设我有一个名为v的向量,它有三个元素:1,2,3
有没有办法从矢量中专门弹出2,所以得到的矢量变为
1,3
答案 0 :(得分:21)
//erase the i-th element
myvector.erase (myvector.begin() + i);
(将向量中的第一个元素计为i=0
)
答案 1 :(得分:15)
假设您正在寻找包含值2
的元素,而不是索引2
的值。
#include<vector>
#include<algorithm>
int main(){
std::vector<int> a={1,2,3};
a.erase(std::find(a.begin(),a.end(),2));
}
(我使用C ++ 0x来避免一些样板,但实际使用std::find
和vector::erase
不需要C ++ 0x)
答案 2 :(得分:5)
另外,如果要删除多个元素,请记得使用erase-remove idiom。
答案 3 :(得分:1)
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
unsigned int i;
vector<unsigned int> myvector;
// set some values (from 1 to 10)
for (i=1; i<=10; i++) myvector.push_back(i);
// erase the 6th element
myvector.erase (myvector.begin()+5);
// erase the first 3 elements:
myvector.erase (myvector.begin(),myvector.begin()+3);
cout << "myvector contains:";
for (i=0; i<myvector.size(); i++)
cout << " " << myvector[i];
cout << endl;
return 0;
}