Avec la nouvelle norme C++ (qui peut nécessiter l'activation de drapeaux spéciaux sur votre compilateur), vous pouvez simplement le faire :
std::vector<int> v { 34,23 };
// or
// std::vector<int> v = { 34,23 };
Ou même :
std::vector<int> v(2);
v = { 34,23 };
Sur les compilateurs qui ne supportent pas encore cette fonctionnalité (listes d'initialisation), vous pouvez l'émuler avec un tableau :
int vv[2] = { 12,43 };
std::vector<int> v(&vv[0], &vv[0]+2);
Ou, pour le cas de l'affectation à un vecteur existant :
int vv[2] = { 12,43 };
v.assign(&vv[0], &vv[0]+2);
Comme James Kanze l'a suggéré, il est plus robuste d'avoir des fonctions qui vous donnent le début et la fin d'un tableau :
template <typename T, size_t N>
T* begin(T(&arr)[N]) { return &arr[0]; }
template <typename T, size_t N>
T* end(T(&arr)[N]) { return &arr[0]+N; }
Et vous pouvez le faire sans avoir à répéter la taille partout :
int vv[] = { 12,43 };
std::vector<int> v(begin(vv), end(vv));
3 votes
Il y a aussi comment initialiser 'const std::vector<T>' comme un tableau c .
0 votes
Vous devez activer le support C++11 dans votre compilateur, par ex.
g++ -std=c++11 your_file.cc
. Ensuite, vous pouvez utiliser le constructeur de la liste d'initialisation du fil (le dernier élément de la liste d'initialisation). cette référence )1 votes
Il ne s'agit pas d'un doublon - l'autre question est de savoir comment le faire avec l'ancien c++, la réponse de WTF est de savoir comment le faire maintenant.