我正在尝试使用类似维度的单位矩阵来扩充矩阵,为什么这段代码不起作用?
它不断给出错误'向量下标超出范围'
for (i = 0; i < matrix.size(); i++)
for (j = matrix.size(); j < 2 * matrix.size(); j++)
if (i == j % matrix.size())
matrix[i][j] = 1;
else
matrix[i][j] = 0;
答案 0 :(得分:2)
对于方形矩阵,我认为你错误地初始化了j?
for (i = 0; i < matrix.size(); i++)
for (j = 0; j < matrix.size(); j++)
if (i == j)
matrix[i][j] = 1;
else
matrix[i][j] = 0;
编辑:所以为了扩充,我认为以下内容可以扩展行的长度 (http://en.wikipedia.org/wiki/Augmented_matrix)
for (i = 0; i < matrix.size(); i++)
matrix[i].resize(2 * matrix.size())
for (j = matrix.size(); j < 2 * matrix.size(); j++)
if (i == j % matrix.size())
matrix[i][j] = 1;
else
matrix[i][j] = 0;
答案 1 :(得分:1)
您必须先调整每个行向量(或行数组)的大小。否则,您尝试访问的单元格将超出行范围(并且您会收到相应的错误)。
您可以matrix[row].resize(2*matrix[row].size());
执行此操作,其中row = 0 .. matrix.size()-1
。