我使用率很高std::set<int>
,通常只需要检查这样的集合是否包含数字即可。
我觉得写自然:
if (myset.contains(number))
...
但是由于缺少contains
成员,我需要编写繁琐的代码:
if (myset.find(number) != myset.end())
..
还是不太明显:
if (myset.count(element) > 0)
..
这个设计决定有理由吗?
count()
方法的另一个(更基本的)问题是,它countains()
要做的工作比要做的更多。
contains()
返回a bool
将会丢失有关元素在集合中的位置的有价值的信息。find()
保留并以迭代器的形式返回该信息,因此对于像STL这样的通用库来说是更好的选择。(尽管这并不是说a bool contains()
并不是非常好用,甚至不是必要的。)
contains(set, element)
使用集合的公共接口编写自由函数很容易。因此,该设备集的接口在功能上是完整的。添加便捷方法只会增加接口而不会启用任何其他功能,而这不是C ++的方式。