如何在每次迭代中创建新的向量
How to create new vector in each iteration?
当我运行下面的代码时,在我的trainingVector
中我得到:
{(10,0),(10,0),(10,0)...}
代替:
{(0,0),(1,0),(2,0)...}
我如何使这个工作正确?
vector< vector< double > * > trainingVector;
for(int i=0;i<10;i++){
vector<double> ok (2,0);
ok[0]=i;
trainingVector.push_back(&ok)
}
就是不要用指针。
std::vector<std::vector<double>> trainingVector;
for (int i = 0; i < 10; ++i) {
std::vector<double> ok(2, 0);
ok[0] = i;
trainingVector.push_back(ok);
}
也可以考虑使用Boost。MultiArray。
您现在使用的方法将不起作用,因为每个vector 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);
}
尽管后一种方法意味着在将内部向量放入外部向量时复制内部向量。
相关文章:
- 使用 back_inserter 从结构的单个成员创建向量
- 在模板类中创建向量 C++
- C 从参数参数包创建向量或列表
- 如何为基类通用类型创建向量以使用具体类型元素
- 在类中创建向量(2D 数组)的向量 - Error:C++ 需要所有声明的类型说明符
- 是否可以在堆栈上创建向量
- 为什么"new vector<int>[5]"不创建向量数组?
- 在不创建向量的情况下检查RCPP中的非限制值
- 如何在缓冲区周围创建向量
- 使用类对象创建向量时,不会调用类构造函数
- 特征不能直接从矩阵均值创建向量
- 从类型列表创建向量元组
- 如何创建向量的向量
- 从 c 数组创建向量
- 正在使用模板类c++重新创建向量
- 如何创建向量数组
- 在 cuda 内核中创建向量
- 如何在C++中修复这个创建向量
- C++从模板迭代器创建向量
- 用new创建向量安全吗