C++11 : erreur: ‘commencer’ n'est pas un membre de ‘std’
Je suis en train de faire l'opération suivante:
source = new int[10];
dest = new int[10];
std::copy( std::begin(source), std::end(source), std::begin(dest));
Cependant, le compilateur signale l'erreur suivante.
copy.cpp:5434:14: error: ‘begin’ is not a member of ‘std’
copy.cpp:5434:44: error: ‘end’ is not a member of ‘std’
copy.cpp:5434:72: error: ‘begin’ is not a member of ‘std’
J'ai inclus le nécessaire <iterator>
d'en-tête dans le code. Quelqu'un peut-il m'aider sur ce point?
Activer Le C++11. (remplir)
OriginalL'auteur Sathish Sanjeevi | 2013-11-09
Vous devez vous connecter pour publier un commentaire.
Modèle de fonctions de std::begin() et std::end() ne sont pas mis en œuvre pour les pointeurs (les pointeurs ne contiennent pas d'informations sur le nombre d'éléments, ils se réfèrent) au Lieu de cela, vous devriez écrire
Comme pour l'erreur que vous devriez vérifier si vous avez inclus l'en-tête
Aussi peut-être que votre compilateur ne supporte pas le C++ 2011 Standard.
OriginalL'auteur Vlad from Moscow
En plus d'inclure
<iterator>
en C++11 activé compilateur. Vous devez savoirbegin/end
ne sont pas utiles pour les pointeurs, ils sont utiles pour les tableaux:std::array
.D'accord, mais parfois un simple
[]
n'est pas un mauvais choix pour les projets simples et des codes.OriginalL'auteur deepmax
ont aussi ce problème lors de l'utilisation de compilateur g++ ce code dans linux.
À l'aide de compilateur g++ qui contiennent C++ featuer devrait ajouter C++11 drapeau
OriginalL'auteur LocustOnMeadow