C++ 矩阵初始化
有人能解释一下下面标记线的意义吗?通常是初始化矩阵 假设大小为3。然后,它应该创建一个具有6个位置的矩阵,即1x6矩阵。但每次我们都需要第二条线。为什么每次都按-1C++ 矩阵初始化,c++,matrix,C++,Matrix,有人能解释一下下面标记线的意义吗?通常是初始化矩阵 假设大小为3。然后,它应该创建一个具有6个位置的矩阵,即1x6矩阵。但每次我们都需要第二条线。为什么每次都按-1 for (unsigned i = 0; i < size(); i++) { vector<int> *t = new vector<int>; // (1) for (unsigned j = 0; j <= i; j++) { t->pu
for (unsigned i = 0; i < size(); i++) {
vector<int> *t = new vector<int>; // (1)
for (unsigned j = 0; j <= i; j++) {
t->push_back(-1); // (2)
}
matrix.push_back(*t);
}
for(无符号i=0;i
该代码构造并初始化正方形矩阵的上或下(取决于索引的解释)三角形。Line(1)
分配一个新的行或列向量。Line(2)
使用任意值(-1
)初始化矩阵对角线以下的值。为什么代码使用-1
作为初始值只能通过检查代码或阅读随附文档来回答
除了功能行(1)
产生内存泄漏。由于矩阵不拥有t
的所有权,因此当t
超出范围时,无法回收内存。更正的代码如下所示:
for (unsigned i = 0; i < size(); i++) {
vector<int> t; // (1)
for (unsigned j = 0; j <= i; j++) {
t.push_back(-1); // (2)
}
matrix.push_back(t);
}
取决于矩阵的第一个索引是引用行还是引用列。使用指向向量的指针,然后动态地分配它,就像违背使用向量的目的一样。使用有什么不对:std::vector t;
?实际上,我从一个程序中挑选了这部分代码,该程序使用了一组简单的类由我的主管修订。我不确定她是如何使用它的。嘿,我是新来的。不幸的是,其中一个答案被我无意中删除了。真的很抱歉。谢谢你,伙计。在程序的后面,经过一些计算后,一些值将被放入矩阵变量中。
-1 -1 -1 -1
-1 -1 or -1 -1
-1 -1 -1 -1