嘿伙计们我试图编写一个方法来创建名为y_i的向量,其中我从1开始并以变量名行结束以输入矩阵。 我试图编写它,以便动态地为此代码添加足够的向量。形式向量y_1,向量y_2等的向量
代码如下。我的问题是我做得对吗?我需要一个结构吗?一类?救命!
#include <iostream>
#include <vector>
using namespace std;
int i, rows;
vector<vector< double > >matrix;
void VectorCreation(int rows)
{
for (i = 1; i <= rows; i++)
{
new vector<double>;
}
}
int main()
{
cin >> rows;
VectorCreation(rows);
return 0;
}
答案 0 :(得分:1)
您目前使用std::vector
在堆上分配new
,但不要将其分配给任何内容,以便分配的数据永远丢失。
我不建议使用new
,但只是使用堆栈分配:
#include <iostream>
#include <vector>
using namespace std;
int rows;
vector<vector< double > >matrix;
void VectorCreation(int rows)
{
matrix.resize(rows);
}
int main()
{
cin >> rows;
VectorCreation(rows);
return 0;
}
答案 1 :(得分:1)
首先关闭
void VectorCreation(int rows)
{
for (i = 1; i <= rows; i++)
{
new vector<double>;
}
}
除了创建内存泄漏之外什么也没做,因为你正在创建新的向量,然后让它们的指针超出范围,因此内存不再可访问但被使用。
其次,如果你想创建一个二维矢量,你可以使用:
std::vector<std::vector<type>> vector_name(num_rows, std::vector<type>(num_cols, default_value));