En C++11 :
#include <vector>
using std::vector;
...
vector<int> vec1 { 10, 20, 30 };
// or
vector<int> vec2 = { 10, 20, 30 };
Utilisation de Boost list_of
:
#include <vector>
#include <boost/assign/list_of.hpp>
using std::vector;
...
vector<int> vec = boost::assign::list_of(10)(20)(30);
Utilisation de l'assignation Boost :
#include <vector>
#include <boost/assign/std/vector.hpp>
using std::vector;
...
vector<int> vec;
vec += 10, 20, 30;
Conventionnel STL :
#include <vector>
using std::vector;
...
static const int arr[] = {10,20,30};
vector<int> vec (arr, arr + sizeof(arr) / sizeof(arr[0]) );
STL conventionnel avec macros génériques :
#include <vector>
#define ARRAY_SIZE(ar) (sizeof(ar) / sizeof(ar[0])
#define ARRAY_END(ar) (ar + ARRAY_SIZE(ar))
using std::vector;
...
static const int arr[] = {10,20,30};
vector<int> vec (arr, ARRAY_END(arr));
STL conventionnel avec une macro d'initialisation de vecteur :
#include <vector>
#define INIT_FROM_ARRAY(ar) (ar, ar + sizeof(ar) / sizeof(ar[0])
using std::vector;
...
static const int arr[] = {10,20,30};
vector<int> vec INIT_FROM_ARRAY(arr);
1 votes
Si vous n'avez pas l'intention de modifier la taille des ints après l'initialisation, envisagez d'utiliser le tableau tr1.
1 votes
@zr, je suis curieux... si j'avais besoin d'une taille fixe, ne pourrais-je pas utiliser les vieux tableaux eux-mêmes ? Je regarde le tableau tr1 en ce moment...
2 votes
tr1::array
est utile parce que les tableaux ordinaires ne fournissent pas l'interface des conteneurs STL.0 votes
J'ai changé le titre pour que cette question soit explicitement une question C++03. Cela semblait plus facile que de passer en revue et de corriger toutes les réponses pour qu'elles aient un sens avec la nouvelle norme C++.
0 votes
C'est ce qu'on appelle initialisation de la liste .
0 votes
Ce n'est pas exactement ce qui est demandé, mais si vous avez besoin d'initialiser le vecteur avec une seule valeur, vous pouvez utiliser
vector::assign()
également.