我一直在尋找周圍,和編碼的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