我經常發現自己使用依賴於開始迭代器和結束迭代器的std算法。爲什麼標準沒有包含以容器作爲參數的重載(而不是迭代器)。在標準中不包括這樣的東西是否有技術上的原因?STL中基於容器的重載
template <typename ContainerT, typename ValueT>
typename ContainerT::iterator find(ContainerT& container, const ValueT& value)
{
return std::find(begin(container), end(container), value);
}
這在搜索整個向量時非常方便。我意識到如果你不想迭代整個容器,那麼仍然需要顯式的迭代器版本。
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! :)
你仍然需要訪問容器的'end()'函數來理解結果。總而言之,從中獲得的東西很少。圖書館已經有一套完善的工具,歡迎您自行構建您認爲對您的項目有用的簡短工具。 –
希望有一天這將成爲可能,同時我將繼續使用我自己的「遠程」版本... –