<分区>
我经常发现自己使用依赖于开始迭代器和结束迭代器的标准算法。为什么标准不包括将容器作为参数(而不是迭代器)的重载。是否有技术原因不在标准中包含此类内容?
template <typename ContainerT, typename ValueT>
typename ContainerT::iterator find(ContainerT& container, const ValueT& value)
{
return std::find(begin(container), end(container), value);
}
这在搜索整个 vector 时非常方便。我意识到如果您不想遍历整个容器,仍然需要显式迭代器版本。
std::vector<std::string> v;
v.push_back("foo");
v.push_back("bar");
std::find(v.begin(), v.end(), "bar");
find(v, "bar"); // much nicer! :)