In C++11:
#include <vector>
using std::vector;
...
vector<int> vec1 { 10, 20, 30 };
// or
vector<int> vec2 = { 10, 20, 30 };
Verwendung von Boost list_of
:
#include <vector>
#include <boost/assign/list_of.hpp>
using std::vector;
...
vector<int> vec = boost::assign::list_of(10)(20)(30);
Mit Boost zuweisen:
#include <vector>
#include <boost/assign/std/vector.hpp>
using std::vector;
...
vector<int> vec;
vec += 10, 20, 30;
Konventionelle STL:
#include <vector>
using std::vector;
...
static const int arr[] = {10,20,30};
vector<int> vec (arr, arr + sizeof(arr) / sizeof(arr[0]) );
Konventionelle STL mit generischen Makros:
#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));
Konventionelle STL mit einem Vektor-Initialisierungsmakro:
#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 Stimmen
Wenn Sie die Größe von ints nach der Initialisierung nicht ändern wollen, sollten Sie tr1 array verwenden.
1 Stimmen
@zr, Sie haben mich neugierig... wenn ich feste Größe benötigt, könnte ich nicht einfach alte Arrays selbst verwenden? Blick auf tr1 Array gerade jetzt...
2 Stimmen
tr1::array
ist nützlich, weil gewöhnliche Arrays nicht die Schnittstelle von STL-Containern bieten0 Stimmen
Ich habe den Titel geändert, um diese Frage ausdrücklich zu einer C++03-Frage zu machen. Das schien einfacher, als alle Antworten so zu korrigieren, dass sie mit dem neuen C++-Standard Sinn machen.
0 Stimmen
Dies wird als Listeninitialisierung .
0 Stimmen
Nicht genau das, was verlangt wird, aber wenn Sie den Vektor mit nur einem Wert initialisieren müssen, können Sie
vector::assign()
auch.0 Stimmen
Nur um das zu sagen
std::vector
liegt im Heap (er hat einenew
), so dass hartkodierte Elemente keinen Leistungsvorteil bieten. Aber wennpush_back
viele sind, kann eine Neuzuweisung erfolgen, die Leistungskosten verursacht. Syntaktisch ist es natürlich besser, die Initialisierungsliste zu verwenden.