[英]pop a specific element off a vector in c++
所以假設我有一個叫做 v 的向量,它有三個元素:1,2,3
有沒有辦法專門從向量中彈出 2 使生成的向量變為
1,3
//erase the i-th element
myvector.erase (myvector.begin() + i);
(計算向量中的第一個元素,如i=0
)
假設您正在尋找包含值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)
另外,如果要刪除多個元素,請記住使用erase-remove慣用法 。
#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;
}
從C++ 20 開始,我們可以使用std::erase
刪除多個元素。
(不需要“ erase-remove idiom ”)
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{1,2,2,3,4,5};
std::erase(v, 2);
for(auto e : v) std::cout << e << " ";
std::cout << '\n';
// output: 1 3 4 5
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.