C++ STL 按值设置删除

标签 c++ stl set

我想从 std::set 中删除一个元素.

我知道最好、最直接的做法是使用 set<T>::find(T val) 检查它在集合中是否存在。方法,然后使用返回的 set<T>::iterator 删除它。但我希望使用按值删除的速记方法。

尽管std::set确实通过重载函数 set<T>::erase(T val) 提供了这一点按列出的值删除 here ,我找不到如果集合中不存在该值会发生什么。

正如人们直观地期望的那样,如果参数值在集合中不存在,它是否会不执行任何操作?是否保证不会抛出任何错误/异常?

最佳答案

std::set 遵守 26.2.6 associative.reqmts 的关联容器要求。

它返回实际删除元素的数量,对于 std::set 来说,该数量必须为零或一,具体取决于是否存在。每26.2.6.1 associative.reqmts.except ,只有在搜索过程中使用容器比较器(显然可以自定义)不抛出时,才保证不抛出。

关于C++ STL 按值设置删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765224/

相关文章:

c++ - 使用集合对 vector 进行排序

C++ 获取分配节的基地址

c++ - vector 的小字符串优化?

python - 如何以子集长度为条件迭代列表的所有分区

c++ - 混合 vector/列表容器?

c++ - 使用 std::set 实现稀疏 3D 网格时出错

c++ - 在 C++ 中打印集合 vector

c++ - std::make_shared 在 std::apply 中

c++ - 当返回 undefined object 类型引用的 C++ 函数的返回值未赋值时会发生什么?

c++ - 我应该删除一个指针吗?