【发布时间】:2014-10-26 09:03:39
【问题描述】:
一些 STL 容器,例如 std::list 和 std::vector 没有 find() 方法作为成员函数。这是为什么?我知道有从<algorithm> 使用std::find 的替代方法,但这种用法仍然不是100% 自然的。
【问题讨论】:
-
可能是因为在顺序容器中搜索元素都有一些算法,所以它变得很常见,玩迭代器
-
@POW 不会阻止标准实施
find(),对吗?我的意思是这可能只是打电话给std::find()... -
您可能想阅读此article by Steve Myers about encapsulation 和此GotW by Herb Sutter about
std::string。基本上,您可以在其直接接口之外实现的类功能越多越好。 -
@Theolodis 不过没必要这么做,否则利大于弊,界面臃肿。如果
std::find能够专门为快速查找容器做正确的事情,那就更好了。 -
你搞错了。
<algorithm>的版本应该是您的默认值。只有在有特殊要求时才有特殊的成员函数。
标签: c++ stl containers