J'ai quelques pré-c++11 code dans lequel j'utilise const
références à passer de grands paramètres, comme l' vector
's beaucoup. En voici un exemple:
int hd(const vector<int>& a) {
return a[0];
}
J'ai entendu dire qu'avec c++11 caractéristiques, vous pouvez passer l' vector
, en valeur, comme suit, sans impact négatif sur les performances.
int hd(vector<int> a) {
return a[0];
}
Par exemple, cette réponse dit
C++11 de la sémantique de déplacement, faire passer et retourner en valeur beaucoup plus attractif, même pour des objets complexes.
Est-il vrai que les deux options sont les mêmes en terme de performance?
Si oui, quand est-utilisation de const référence comme dans l'option 1 de mieux que l'option 2? (c'est à dire pourquoi avons-nous encore besoin d'utiliser const références en c++11).
Une raison pour laquelle je demande, c'est que const références compliquer déduction des paramètres du modèle, et il serait beaucoup plus facile à utiliser passer par valeur, que, si c'est la même chose avec const référence en terme de performance.
Merci,