Чтобы избежать бесконечных push_backs, я обычно инициализирую tr1::array
и создаю std::vector
(или любой другой контейнерный контейнер std) из результата;
const std::tr1::array<T, 6> values = {T(1), T(2), T(3), T(4), T(5), T(6)};
std::vector <T> vec(values.begin(), values.end());
Единственное неудобство в том, что вы должны явно указать количество значений.
Это, конечно, можно сделать без использования tr1::array
aswell;
const T values[] = {T(1), T(2), T(3), T(4), T(5), T(6)};
std::vector <T> vec(&values[0], &values[sizeof(values)/sizeof(values[0])]);
Хотя вам не нужно явно указывать количество элементов, я предпочитаю первую версию.