web-dev-qa-db-fra.com

Ajouter plusieurs fois la même valeur à std :: vector (répéter)

Je veux ajouter une valeur plusieurs fois à un vecteur std ::. Par exemple. ajoutez cinq fois la valeur entière 1 au vecteur:

std::vector<int> vec;
vec.add(1, 5);

vec devrait être de la forme {1,1,1,1,1} par la suite. Existe-t-il une méthode propre à C++ pour le faire?

22
Kackao

Cela dépend vraiment de ce que vous voulez faire.

Faites un vecteur de longueur 5, rempli de uns:

std::vector<int> vec(5, 1);

Développez un vecteur par 5 et remplissez-le avec ceux-ci:

std::vector<int> vec;
// ...
vec.insert(vec.end(), 5, 1);

Ou redimensionnez-le (si vous connaissez la taille initiale):

std::vector<int> vec(0);
vec.resize(5, 1);

Vous pouvez également remplir des éléments en utilisant l'une des nombreuses versions de fill, par exemple:

fill_n(back_inserter(vec), 5, 1);

et ainsi de suite .... Lisez la documentation de la bibliothèque, certaines de ces fonctions renvoient également des informations utiles.

44
user1812457

Vous pouvez simplement utiliser le std::vector constructeur pour cela:

std::vector<int> vec (5,1);

La signature de ceci est:

vector (size_type n, const value_type& val)

L'en-tête standard algorithm a un certain nombre de fonctions qui peuvent être utilisées dans des cas comme celui-ci. std::fill_n fonctionnerait pour votre cas .:

std::fill_n (std::back_inserter(vec), 5, 1);
8
TartanLlama

Utilisez simplement std::vector::insert.

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> a;
    a.insert(a.end(), 5, 1);
    for(auto const& e : a)
        std::cout << e << std::endl;
    return 0;
}
8
ivaigult

Vous pouvez utiliser la méthode assign:

vec.assign(5, 1);

Cela supprimera tous les éléments existants dans le vecteur avant d'ajouter les nouveaux.

2
axxis