J’ai besoin de copier std::set std::vector
Où est le problème ?
Vous devez utiliser un back_inserter
:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copy
n'est pas d'ajouter des éléments dans le conteneur dans lequel vous insérez: il ne peut pas; il ne dispose que d'un itérateur dans le récipient. De ce fait, si vous passez une sortie itérateur directement à l' std::copy
, vous devez vous assurer qu'il pointe vers une plage qui est au moins assez grande pour contenir la gamme d'entrée.
std::back_inserter
crée une sortie itérateur qui appelle push_back
sur un conteneur pour chaque élément, de sorte que chaque élément est inséré dans le conteneur. Alternativement, vous pourriez avoir créé un nombre suffisant d'éléments dans l' std::vector
pour tenir la gamme copié:
std::vector<double> output(input.size());
std::copy(input.begin(), input.end(), output.begin());
Ou, vous pouvez utiliser l' std::vector
de la gamme du constructeur:
std::vector<double> output(input.begin(), input.end());
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.