Copie std::vector en std::array
Comment puis-je copier ou de déplacer la première n
éléments d'un std::vector<T>
en C++11 std::array<T, n>
?
std::copy_n
.Vous souhaitez copier ou déplacer? Ce sont des choses différentes.
Selon ce
::std::vector
contient, ::std::memcpy
et ::std::memmove
pourrait également être utilisé.ou en C++ le
std::uninitialized_copy
🙂OriginalL'auteur LocalToast | 2014-01-22
Vous devez vous connecter pour publier un commentaire.
Utilisation
std::copy_n
Edit: je n'avais pas remarqué que vous aviez demandé à propos de déplacer les éléments. Pour se déplacer, enveloppez-le de la source d'itérateur dans
std::move_iterator
.Oui,
N
est const (suppose que je devrais avez utilisén
telle que publiée dans la question)Il y a aussi
std::move
. Malheureusement, passtd::move_n
.qu'advient-il si la taille N est pas la bonne? c'est à dire le vecteur a 5 éléments, array veut copier 10? Le rpc page de doc est un peu dans le flou sur ce.
undefined... donc, certains compilateur peut jeter l'exception, d'ailleurs il va écraser la mémoire? J'espère qu'il jette exception, sinon, quel est le gain au cours de la crue tableau silencieusement des ordures de la mémoire lorsque vous sortez des limites?
OriginalL'auteur Praetorian
Vous pouvez utiliser
std::copy
:Et iciest l'exemple vivant.
Si vous souhaitez déplacer, au lieu de cela, vous pouvez utiliser
std::move
:Et ici's les autres vivent exemple.
n
? Ne devrait-elle pas êtrestd::copy(x.begin(), x.begin() + n, y.begin());
?Au lieu d'utiliser une variable comme
n
, ne serait-il pas préférable d'utiliserx.size()
?OriginalL'auteur Shoe