Я знаю, что могу инициализировать вектор следующим образом:
vector<int> v{1,3,4,6};
Однако, когда я определяю класс, содержащий вектор, я не могу инициализировать его в позиции, в которой я его объявляю, вот так:
class C {
public:
vector<int> v;
C();
};
Таким образом, мне нужно инициализировать его в функции построения. Следующий код работает, но не является чистым:
C::C() {
v.resize(4);
v[0]=1;
v[1]=3;
v[2]=4;
v[3]=6;
}
Как можно аккуратно и прямо инициализировать его, как vector<int> v{1,3,4,6};
, а не присваивать значения по одному?
Редактировать: Возможно, у меня есть не проясните мою ситуацию. Значение {1,3,4 6} не может быть предопределенным значением, оно будет зависеть от некоторых лог c и условий: if(condition_a) {v[0] = 0; v[1]=3; ...} else {v[0]=4;v[0]=8;...}
. Поэтому мне приходится иметь дело с некоторыми другими вещами, чтобы знать, как инициализировать этот вектор, поэтому я не могу использовать список инициализации, как предлагается в некоторых ответах. Любой совет, пожалуйста?