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

标签 c++ stl iterator containers c++11

独立的 STL 算法(如 std::count_if)采用一对迭代器。在我使用这些的所有情况下(以及我在网上看到的所有示例!),我发现自己在输入

std::count_if(myContainer.begin(),myContainer.end(), /* ... */ );

样式的速记模板有什么原因吗

std::count_if(myContainer, /* ... */ );

没有提供,因为更多的是对整个容器执行的操作?我只是忽略了吗? c++11和c++03的答案不同吗?

最佳答案

有一个不错的blog-post由 Herb Sutter 讨论这个问题。要点是,如果已经存在具有相同数量模板参数的算法的重载,则为算法添加基于容器的重载可能会产生歧义。概念旨在解决这个问题。

关于c++ - STL 算法将整个容器而不是 .begin(), end() 作为 arg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164738/

相关文章:

C++ : 类 类名::引用 { ... }

c++ - 这个 std::ostream 相关的堆栈跟踪是什么意思?

c++ - 多个容器和数据类型的模板函数

c# - WinRT 上的 C++、C# 和 JavaScript

c++ - '<<' & ' >>'运算符重载

java - 如何同步从 java 传递到 c++ 的 c++ 中的 java 对象?

C++ 检索字符串的一部分

java - 第二次迭代 - 值保持不变

python - 如何创建一个在StopIteration之后继续运行的Generator?

c++ - 是否可以访问从给定迭代器到 vector 的底层指针?