我一直在寻找周围,和编码的std ::算法出于某种原因,一些基本的例子我从来没有发现很奇怪,他们喜欢这个工作,例如:C++ STL函数模板类型推演
#include <vector>
#include <algorithm>
int main(){
std::vector<int> vec;
vec.resize(100);
std::generate(std::begin(vec), std::end(vec), std::rand);
auto element = std::max_element(std::begin(vec), std::end(vec));
}
为什么它不需要模板参数是这样的:
std::generate<std::vector<int>::iterator>(...
std::max_element<std::vector<int>::iterator>(...
你的标题已经有了答案......'std :: being(vec)'是'std :: vector :: iterator',所以不需要再次告诉编译器 –
user463035818
我不确定你在问什么。你问你为什么不需要为generate()和max_element显式定义一个迭代器? std :: begin和std :: end返回迭代器,矢量的类型包含在vec中。 – quinz