C++ STL 设置按值擦除
C++ STL Set Erase by Value
我想从std::set
中删除一个元素。
我知道最好和直接的做法是使用set<T>::find(T val)
方法检查它在集合中的存在,然后使用返回的set<T>::iterator
擦除它。但我希望使用按值擦除的速记方法。
尽管std::set
确实提供了通过重载函数set<T>::erase(T val)
按此处列出的值擦除的功能,但我找不到如果集合中不存在该值会发生什么。
正如人们直观地期望的那样,如果集合中不存在参数值,它是否什么都不做?是否保证它不会引发任何错误/异常?
std::set
遵守26.2.6 associaciative.reqmts 的关联容器要求。
它返回实际擦除元素的数量,对于std::set
,这些元素必须为零或 1,具体取决于是否存在。根据 26.2.6.1 associaciative.reqmts.except,只有在容器比较器(显然可以自定义(在搜索期间使用时不抛出时才保证不会抛出。
来自 cplusplus
(1(空隙擦除(迭代器位置(;
(2( size_type擦除(const value_type& val(;
(3(空隙擦除(迭代器在前,迭代器后(;
返回值
对于基于值的版本 (2(,该函数返回擦除的元素数。
成员类型 size_type 是无符号整型
因此,如果未擦除任何元素,则返回 0。
相关文章:
- 引用一个已擦除类型(void*)的指针
- 擦除while循环中迭代的元素
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- C++擦除(如果存在)
- 在映射擦除c++期间执行循环的次数
- 为什么擦除方法会影响结束方法
- C++ 字符串类擦除成员函数的时空复杂性
- 类型擦除的std::function与虚拟函数调用的开销
- C++14 中unordered_map矢量和擦除删除成语的奇怪行为
- C++ 擦除函数中需要澄清
- 循环挂起迭代的 std::擦除 on std::list
- 擦除许多矢量元素,同时使用'auto'
- 如何擦除冗余输入?
- C++ STL 设置按值擦除
- 如何在C++中允许成员函数的自定义返回类型进行类型擦除?
- 迭代时擦除设置元素///
- std::设置擦除复杂性异常
- C++:查找并擦除设置元素
- C++设置容器无法擦除奇数
- 矢量擦除无需设置返回值即可工作