Existe-t-il des préférences ou des règles générales qui expliquent quand les versions spécifiques du conteneur de begin et end doivent être utilisées au lieu des fonctions libres ? std::begin
et std::end
?
D'après ce que j'ai compris, si la fonction est un modèle dans lequel le type de conteneur est un paramètre de modèle, alors std::begin
et std::end
devrait être utilisé, c'est-à-dire
template<class T> void do_stuff( const T& t )
{
std::for_each( std::begin(t), std::end(t), /* some stuff */ );
}
Qu'en est-il dans d'autres scénarios tels qu'une fonction standard / membre où le type de conteneur est connu ? Est-il toujours préférable d'utiliser std::begin(cont)
et std::end(cont)
ou si les fonctions membres du conteneur cont.begin()
et cont.end()
être préféré ?
Ai-je raison de supposer qu'il n'y a pas d'avantage en termes de performance en appelant cont.end()
sur std::end(cont)
?