Метод, который вы используете сейчас, не будет работать, потому что жизнь каждого векторного объекта ok
длится только в течение итерации, прежде чем он выпадет из области видимости и умрет.
Вам нужно сделать это вместо этого:
vector< vector< double > * > trainingVector;
for(int i=0;i<10;i++){
vector<double> *ok = new vector<double>(2,0);
(*ok)[0]=i;
trainingVector.push_back(ok);
}
Имейте в виду, что позже вам потребуется вручную освободить каждый внутренний вектор.Или вы получите утечку памяти.
for(int i=0;i<10;i++){
delete trainingVector[i];
}
В качестве альтернативы, вы можете сделать это без указателей все вместе:
vector< vector< double > > trainingVector;
for(int i=0;i<10;i++){
vector<double> ok(2,0);
ok[0]=i;
trainingVector.push_back(ok);
}
Хотя этот последний метод подразумевает копирование внутреннего вектора, когда онположить во внешний вектор.