web-dev-qa-db-fra.com

Puis-je initialiser un vecteur STL avec 10 du même entier dans une liste d'initialisation?

Puis-je initialiser un vecteur STL avec 10 du même entier dans une liste d'initialisation? Mes tentatives jusqu'à présent m'ont échoué.

40
Xavier

Je pense que vous voulez dire ceci:

struct test {
   std::vector<int> v;
   test(int value) : v( 100, value ) {}
};

Utilisez le constructeur approprié, qui prend une taille et une valeur par défaut.

int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
118
Ed S.

Si vous utilisez C++ 11 et sur GCC, vous pouvez le faire:

vector<int> myVec () {[0 ... 99] = 1};

C'est ce qu'on appelle l'initialisation à distance et est une extension GCC uniquement.

7
Mahmoud Al-Qudsi

La liste d'initialisation pour le vecteur est prise en charge à partir de C++ 0x. Si vous avez compilé avec C++ 98

int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
6
Agus

Vous pouvez le faire avec std::vector constructeur:

vector(size_type count, 
                 const T& value,
                 const Allocator& alloc = Allocator());

Ce qui prend count et value à répéter.

Si vous souhaitez utiliser des listes d'initialisation, vous pouvez écrire:

const int x = 5;
std::vector<int> vec {x, x, x, x, x, x, x, x, x, x};
5
Rafał Rawicki

pouvez-vous poster ce que vous faites

 int i = 100;
vector<int> vInts2 (10, i);

vector<int>::iterator iter;
for(iter = vInts2.begin(); iter != vInts2.end(); ++iter)
{
    cout << " i " << (*iter) << endl;
}
0
nate_weldon