我有一个 std::vector
std::vector<int> vec;
vec.push_back(6);
vec.push_back(-17);
vec.push_back(12);
vec.erase(???);
原文由 dau_man 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要使用标准模板库的 std::vector::erase
功能。
// Deleting the eleventh element from vector vec
vec.erase( vec.begin() + 10 );
std::vector<T,Allocator>::erase
用法:
iterator erase (iterator position); // until C++11
iterator erase( const_iterator pos ); // since C++11 and until C++20
constexpr iterator erase( const_iterator pos ); // since C++20
这里有一个参数 position
它是一个迭代器,指向要从向量中删除的单个元素。成员类型 iterator
和 const_iterator
是指向元素的随机访问迭代器类型。
erase
函数执行以下操作:
它从向量中删除单个元素( position
)或一系列元素( [first, last)
)。
它通过删除元素的数量来减小容器大小,这些元素被销毁。
注意:迭代器 pos
必须有效且可取消引用。因此 end()
迭代器(有效,但不可取消引用)不能用作 pos
的值。
返回值是一个迭代器,指向函数调用删除的最后一个元素之后的元素的新位置。这是擦除序列中最后一个元素的操作的容器端。
成员类型迭代器是指向元素的 random access iterator
类型。
在这里,时间复杂度与擦除(破坏)的元素数量加上最后一个元素被删除(移动)之后的元素数量成线性关系。
原文由 S M Samnoon Abrar 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
要删除单个元素,您可以执行以下操作:
或者,一次删除多个元素: