为什么"std::set::erase(const key_type&)"返回"size_type"而不是"bool"?
Why does `std::set::erase(const key_type&)` return `size_type` instead of `bool`?
因为std::set
不与insert()
重复,所以可以保证它包含唯一的元素。当使用重载erase(const key_type&)
时,其对象最多包含1个相同值的元素。因此,它可以返回1(如果存在(或0(否则(。
erase(const key_type&)
什么时候可以返回1以上
换句话说,返回size_type
而不是简单的bool
的目的是什么?
返回size_type
的目的是一致性;所有关联容器都有一个erase
方法,该方法采用键类型并返回大小。即使大小只能是零或一,它仍然是相同的接口。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 大于65535的C++数组[size]引发不一致的溢出
- 为什么(-1)%vector::size()总是返回0
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- 警告的原因是什么:"when type is in parentheses, array cannot have dynamic size"?
- 调用 list.size() 方法给出错误"expression must have class type"
- vtkTypeTraits.h 错误:"Type long is not 4 or 8 bytes in size."
- C++/ASM - "Operand size conflict" , "Improper operand type"
- 提升精神语法错误 - "no type named ‘size’ in ‘struct boost::spirit::unused_type’"
- 如何在 c++11 中使用容器 std::array<type, size> 用于多维数组?
- OpenCV 错误:断言失败 (src1.size == dst.size && dst.type() == CV_8U) in cvInRangeS
- "error: request for member ‘size’ in ‘a’, which is of pointer type"但我不认为这是一个指针
- new(size, value) Type[0]返回的指针是否合法,是否可以用来构建数组?