Si je réserve de l'espace pour un vecteur, puis je copie des valeurs avec std::copy_n()
, les valeurs sont copiées correctement et accessibles, mais la taille du vecteur est toujours zéro. Est-ce le comportement attendu? Dois-je redimensionner le vecteur, même s'il n'est pas aussi efficace?std :: copy_n ne change pas la taille du vecteur de destination
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
std::vector<double> src, dest;
for(double x = 0.0; x < 100.0; ++x)
src.push_back(x);
dest.reserve(src.size());
std::copy_n(src.cbegin(), src.size(), dest.begin());
std::cout << "src.size() = " << src.size() << std::endl;
std::cout << "dest.size() = " << dest.size() << std::endl;
for(size_t i = 0; i < src.size(); ++i)
std::cout << dest[i] << " ";
}
Compilateurs testés: clang, gcc, Visual C++
Je pense que le 'réserve()' affecte uniquement la capacité, pas la taille. –
@RawN, oui, mais je m'attendais 'copy_n' à mettre à jour la taille. – Pietro
Vous savez que vous pouvez simplement faire dest = src? Vous connaissez la fonction assign du vecteur? –