Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 矩阵初始化_C++_Matrix - Fatal编程技术网

C++ 矩阵初始化

C++ 矩阵初始化,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

有人能解释一下下面标记线的意义吗?通常是初始化矩阵

假设大小为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->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