С новым стандартом C ++ (могут потребоваться специальные флаги для включения в вашем компиляторе) вы можете просто сделать:
std::vector<int> v { 34,23 };
// or
// std::vector<int> v = { 34,23 };
Или даже:
std::vector<int> v(2);
v = { 34,23 };
В компиляторах, которые не поддерживают эту функцию (списки инициализаторов), вы можете эмулировать это с помощью массива:
int vv[2] = { 12,43 };
std::vector<int> v(&vv[0], &vv[0]+2);
Или, в случае присвоения существующему вектору:
int vv[2] = { 12,43 };
v.assign(&vv[0], &vv[0]+2);
Как предположил Джеймс Канце, более надежно иметь функции, которые дают вам начало и конец массива:
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; }
И тогда вы можете сделать это, не повторяя размер повсюду:
int vv[] = { 12,43 };
std::vector<int> v(begin(vv), end(vv));
person
R. Martinho Fernandes
schedule
18.01.2012
g++ -std=c++11 your_file.cc. Затем вы можете использовать конструктор списка инициализаторов потока (последний элемент в этой ссылке < / а>) - person   schedule 25.04.2013