J'ai regardé autour de, et coder quelques exemples de base pour std :: algorithme et pour une raison que je ne trouvais étrange qu'ils fonctionnent comme ceci par exemple:C++ fonctions stl déduction de type de modèle
#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));
}
Comment se fait-il ne nécessite pas de paramètres du modèle comme celui-ci:
std::generate<std::vector<int>::iterator>(...
std::max_element<std::vector<int>::iterator>(...
votre titre a déjà la réponse ... 'std :: being (vec)' est un 'std :: vector :: iterator', donc pas besoin de le redire au compilateur –
user463035818
Je ne suis pas sur ce que vous demandez. Demandez-vous pourquoi vous n'avez pas besoin de définir explicitement un itérateur pour generate() et max_element? std :: begin et std :: end retournent les itérateurs et le type du vecteur est inclus dans vec. – quinz