Chaque conteneur standard a un begin
et end
fonction pour le retour des itérateurs pour ce conteneur. Cependant, C++11 a, apparemment, a introduit la gratuité des fonctions appelées begin
et end
qui appellent l' begin
et end
des fonctions de membre du. Donc, au lieu d'écrire
auto i = v.begin();
auto e = v.end();
vous voulez écrire
auto i = begin(v);
auto e = end(v);
Dans son discours, l'Écriture de C++Moderne, Herb Sutter dit que vous devriez toujours utiliser les fonctions libres de maintenant, quand vous voulez le début ou la fin d'itérateur pour un conteneur. Cependant, il ne rentre pas dans le détail pourquoi vous voulez. En regardant le code, il vous permet d'économiser tous d'un seul caractère. Donc, tant que le conteneur standard de go, la gratuit des fonctions semblent être complètement inutile. Herb Sutter a indiqué qu'il y avait des avantages pour les non-conteneurs standard, mais encore une fois, il n'a pas entrer dans les détails.
Donc, la question est quoi exactement la fonction libre versions d' begin
et end
faire au-delà de l'appel de leur membre correspondant de la fonction des versions, et pourquoi voudriez-vous utiliser?