我大量使用 std::set<int>
通常我只需要检查这样的集合是否包含数字。
我觉得写起来很自然:
if (myset.contains(number))
...
但是由于缺少一个contains
成员(member),我需要写繁琐的:
if (myset.find(number) != myset.end())
..
或者不那么明显:
if (myset.count(element) > 0)
..
这个设计决定有原因吗?
最佳答案
我认为这可能是因为他们试图使 std::set
和 std::multiset
尽可能相似。 (显然 count
对 std::multiset
具有完全合理的含义。)
我个人认为这是一个错误。
如果您假装 count
只是 contains
的拼写错误并将测试编写为:
if (myset.count(element))
...
不过还是有点遗憾。
关于c++ - 为什么 std::set 没有 "contains"成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532550/