我有一个std::vector<int>,我想删除第n个元素。我怎么做呢?
std::vector<int> vec;
vec.push_back(6);
vec.push_back(-17);
vec.push_back(12);
vec.erase(???);
我有一个std::vector<int>,我想删除第n个元素。我怎么做呢?
std::vector<int> vec;
vec.push_back(6);
vec.push_back(-17);
vec.push_back(12);
vec.erase(???);
当前回答
erase方法将以两种方式使用:
擦除单个元素: 向量。Erase (vector.begin() + 3);//删除第四个元素 元素擦除范围: 向量。删除(vector.begin() + 3, vector.begin() + 5);//从第4个元素删除到第6个元素
其他回答
这里还有一种方法,如果你想删除一个元素,通过在vector中找到它的值,你只需要在vector上做这个。
vector<int> ar(n);
ar.erase(remove(ar.begin(), ar.end()), (place your value here from vector array));
它会把你的价值从这里抹去。 谢谢
要删除单个元素,你可以这样做:
std::vector<int> vec;
vec.push_back(6);
vec.push_back(-17);
vec.push_back(12);
// Deletes the second element (vec[1])
vec.erase(std::next(vec.begin()));
或者,一次删除多个元素:
// Deletes the second through third elements (vec[1], vec[2])
vec.erase(std::next(vec.begin(), 1), std::next(vec.begin(), 3));
erase方法将以两种方式使用:
擦除单个元素: 向量。Erase (vector.begin() + 3);//删除第四个元素 元素擦除范围: 向量。删除(vector.begin() + 3, vector.begin() + 5);//从第4个元素删除到第6个元素
如果你使用较大的向量(大小为> 100,000),并且想要删除大量的元素,我建议这样做:
int main(int argc, char** argv) {
vector <int> vec;
vector <int> vec2;
for (int i = 0; i < 20000000; i++){
vec.push_back(i);}
for (int i = 0; i < vec.size(); i++)
{
if(vec.at(i) %3 != 0)
vec2.push_back(i);
}
vec = vec2;
cout << vec.size() << endl;
}
该代码获取vec中不能被3整除的所有数字,并将其复制到vec2。然后在vec中复制vec2。它非常快。要处理200,000,000个元素,这个算法只需要0.8秒!
我用擦除方法做了同样的事情,这需要很多很多时间:
Erase-Version (10k elements) : 0.04 sec
Erase-Version (100k elements) : 0.6 sec
Erase-Version (1000k elements): 56 sec
Erase-Version (10000k elements): ...still calculating (>30 min)
删除一个元素的方法如下:
// declaring and assigning array1
std:vector<int> array1 {0,2,3,4};
// erasing the value in the array
array1.erase(array1.begin()+n);
欲了解更广泛的概况,请访问:http://www.cplusplus.com/reference/vector/vector/erase/