STL算法将整个容器而不是.begin(),end()作为arg?

eud*_*xos 17 c++ containers iterator stl c++11

独立的STL算法(如std::count_if)采用一对迭代器.在我使用这些的所有情况下(以及我在网上看到的所有例子中),我发现自己打字了

std::count_if(myContainer.begin(),myContainer.end(), /* ... */ );
Run Code Online (Sandbox Code Playgroud)

是否有为什么样式的速记模板的原因

std::count_if(myContainer, /* ... */ );
Run Code Online (Sandbox Code Playgroud)

鉴于在整个集装箱上进行的操作不是很多而没有提供?我只是忽略了它吗?答案是否与c ++ 11和c ++ 03不同?

Bjö*_*lex 10

Herb Sutter 有一篇很好的博客文章讨论了这个问题.要点是,如果已经存在具有相同数量的模板参数的该算法的重载,则为算法添加基于容器的重载可能会产生歧义.概念旨在解决这个问题.