Comment est-ce que j'utilise for_each pour sortir en cout?
Est-il plus simple façon de le faire?
for_each(v_Numbers.begin(), v_Numbers.end(), bind1st(operator<<, cout));
Sans explicite for
boucle, si possible.
EDIT:
Comment faire pour std::cin
avec un std::vector
si possible? (Comment lire n
éléments seulement)?
source d'informationauteur nakiya
Vous devez vous connecter pour publier un commentaire.
Que vous pourriez réaliser cela à l'aide de
std::copy
dans unstd::ostream_iterator
:Il serait encore mieux si vous ajoutez un peu de suffixe:
Cela suppose que votre conteneur est un
vector<int>
de sorte que vous aurez à les remplacer que la partie avec le type approprié.Modifier sur la lecture d'entrée:
À l'inverse, vous pouvez copier à partir d'une gamme de
std::istream_iterator
dans unvector
à l'aide destd::back_inserter
:Si vous voulez lire de n éléments seulement, regardez cette question.
Une autre option — Coup de pouce.Lambda.
Yep, mais vous devez utiliser std::algorithme de copie:
yup, à l'aide d'expressions lambda (C++ 11), nous pouvons procédés d'impression en ligne de chaque élément d'un conteneur STL pour cout.
Pour la lecture "n" valeurs de cin de vecteur,
(ou) en utilisant l'expression Lambda
Pour en savoir plus sur la Lambda expression @ Qu'est ce qu'une lambda expression en C++11?
Pas toujours approprié de l'entreprise dans le code, mais pour le bien de l'énumération des options - si vous avez vraiment trouver d'autres for_each /std::copy, etc. des solutions trop bavard, vous pourriez écrire:
C'est beaucoup plus agréable si vous êtes bien élevé (;-p), assez pour ne surchargez votre instanciation de vecteur (ce qui nécessite My_Type être plus qu'un typedef-à-dire de type int, mais il n'est pas difficile de créer basé sur un modèle de classe pour créer de nouveaux types d'emballage d'un type arbitraire). Sinon, si quelqu'un d'autre fait la même chose ailleurs dans votre unité de traduction, la diffusion en continu peut devenir ambigu.