c++ - 为什么 std::set 没有 "contains"成员函数?

标签 c++ stl stdset

我大量使用 std::set<int>通常我只需要检查这样的集合是否包含数字。

我觉得写起来很自然:

if (myset.contains(number))
   ...

但是由于缺少一个contains成员(member),我需要写繁琐的:

if (myset.find(number) != myset.end())
  ..

或者不那么明显:

if (myset.count(element) > 0) 
  ..

这个设计决定有原因吗?

最佳答案

我认为这可能是因为他们试图使 std::setstd::multiset 尽可能相似。 (显然 countstd::multiset 具有完全合理的含义。)

我个人认为这是一个错误。

如果您假装 count 只是 contains 的拼写错误并将测试编写为:

if (myset.count(element)) 
   ...

不过还是有点遗憾。

关于c++ - 为什么 std::set 没有 "contains"成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532550/

相关文章:

javascript - 获取 json 属性 duktape

c++ - 如何将二进制数据复制到字符串流

c++ - 来自 std::set insert() 和 find() 的写-写数据竞争?

C++ STL streambuf异常处理

c++ - 使用迭代器排序列表不会对最后一个元素 C++ 进行排序

c++ - 如何检查一个集合是否在C++中的特定范围内具有元素

c++ - 如何检测集合中的当前元素是否是最后一个元素?

c++ - 在服务启动期间调用 CoCreateInstance

c++ - [LLVM-9 clang-9 OSX]: std::filesystem::path 无法识别

c++ - 在 QT 应用程序(VS 插件)中使用 QcustomPlot 基本代码停止工作程序