我大量使用 std::set<int>
而且我通常只需要检查这样的集合是否包含数字。
我会觉得很自然地写:
if (myset.contains(number))
...
但是因为缺少一个 contains
成员,所以需要编写繁琐的:
if (myset.find(number) != myset.end())
..
或不那么明显:
if (myset.count(element) > 0)
..
这个设计决定有理由吗?
原文由 Jabberwocky 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为这可能是因为他们试图使
std::set
和std::multiset
尽可能相似。 (显然count
std::multiset
完全合理的含义。)我个人认为这是一个错误。
如果您假装
count
只是contains
的拼写错误,并且将测试写为:尽管如此,这仍然是一种耻辱。