我正在大量使用,std::set<int>而且我经常需要检查这样的集合是否包含数字.
我觉得写作很自然:
if (myset.contains(number))
...
Run Code Online (Sandbox Code Playgroud)
但由于缺少一名contains成员,我需要编写繁琐的内容:
if (myset.find(number) != myset.end())
..
Run Code Online (Sandbox Code Playgroud)
或者不那么明显:
if (myset.count(element) > 0)
..
Run Code Online (Sandbox Code Playgroud)
这个设计决定有理由吗?
我可以理解multiset有count(),用于计算值的出现次数,因为元素可以在multiset中重复.但是,如果所有值都是唯一的,那么将count()设置为set是什么意思?
它真正检查的是contains()而不是出现次数的计数,对吧?不允许重复,所以不包含()是一个比count()更好的名字?