我有一个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个元素
其他回答
erase方法将以两种方式使用:
擦除单个元素: 向量。Erase (vector.begin() + 3);//删除第四个元素 元素擦除范围: 向量。删除(vector.begin() + 3, vector.begin() + 5);//从第4个元素删除到第6个元素
std::vector上的erase方法重载了,所以调用它可能更清楚
vec.erase(vec.begin() + index);
当你只想擦除一个元素时。
这里还有一种方法,如果你想删除一个元素,通过在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));
最快的方法(对于时间复杂度()=常量的编程竞赛)
可在1秒内擦除100M项目;
vector<int> it = (vector<int>::iterator) &vec[pos];
vec.erase(it);
最易读的方式: Vec.erase (vec.begin() + pos);