Ajouter plusieurs valeurs d'un vecteur
J'ai un vecteur d'entiers que je veux ajouter plusieurs valeurs trop mais trop grand nombre de valeurs à ajouter à l'aide de beaucoup de push_backs
. Existe t'il une méthode d'ajout de plusieurs valeurs à la fin d'un vecteur. Quelque chose le long des lignes de ce:
std::vector<int> values
values += {3, 9, 2, 5, 8, etc};
J'ai trouvé que boost a quelque chose comme cela, mais je ne voudrais pas avoir à inclure coup de pouce.
#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
{
std::vector<int> myElements;
myElements += 1,2,3,4,5;
}
Qui semble être déclaré comme ceci:
template <class V, class A, class V2>
inline list_inserter<assign_detail::call_push_back<std::vector<V,A> >, V>
operator+=( std::vector<V, A>& c, V2 v )
{
return push_back( c )( v );
}
Est-il C++/C++11 façon de le faire, ou, sinon, comment serait-il mis en œuvre?
eh bien... vous pourriez utiliser le boost de code que vous venez de lire et de le reproduire.
En quelque sorte liée est stackoverflow.com/q/14561941/3235496
En quelque sorte liée est stackoverflow.com/q/14561941/3235496
OriginalL'auteur Eejin | 2014-11-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement faire un opérateur:
operator+=
, alors cette fonction est caché. Pour contourner cela, vous avez à faireusing ::operator+=
dans tout espace qui déclare un autreoperator+=
. Ce n'est trouvé par ADL parce que ce serait seulement vérifiernamespace std
(et on ne peut pas mettre cela dansnamespace std
parce que le code de l'utilisateur ne peut pas le faire).Je suis conscient de cela. J'aurais ajouté un commentaire à ce sujet.
Il n'est pas trop tard!
OriginalL'auteur 0x499602D2
Cela devrait fonctionner:
OriginalL'auteur Slava
Peut-être avec insérer:
Démo.
OriginalL'auteur Columbo
Afin de présenter, autant que possible, des solutions, cela devrait fonctionner:
Démo.
OriginalL'auteur Tacet
Vous pouvez imiter le coup de pouce
boost::assign
comportementPuis,
Voir
ici
OriginalL'auteur P0W
Vous pouvez le faire en utilisant l'insert de la fonction membre, en tant que tel:
Il y avait une réponse précédente qui a omis le milieu argument dans le menu paramètres, mais que l'on n'a pas de travail. Il existe plusieurs formats à suivre pour la méthode d'insertion, qui peut être trouvé ici et l'extrait de code que j'ai écrit pratiquement suit ce format:
vectorName.insert(position de début de la saisie des valeurs, la première valeur à entrer, combien de valeurs d'entrée)
Remarque: notez Que les deux derniers arguments (c'est à dire myarr, myarr+8) utiliser le pointeur de l'arithmétique. myarr est l'adresse en mémoire du premier élément du tableau, et la seconde valeur est l'adresse de la 8ème élément. Vous pouvez lire sur l'arithmétique des pointeurs ici.
Espère que ça aide!
OriginalL'auteur nopenopenope