如何用默认值填充`std :: vector <std :: vector <t>&gt;`?</std :: vector <t>

时间:2011-11-11 11:56:03

标签: c++ stl vector std

所以我试试这个:

std::vector< std::vector<int> > matrix(4);

matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
matrix[0][3] = 1;

matrix[1][0] = 1;
matrix[1][1] = 2;
matrix[1][2] = 3;
matrix[1][3] = 1;

matrix[2][0] = 1;
matrix[2][1] = 2;
matrix[2][2] = 3;
matrix[2][3] = 1;

matrix[3][0] = 1;
matrix[3][1] = 2;
matrix[3][2] = 3;
matrix[3][3] = 1;

但出了问题,我的应用程序在运行时死亡=(怎么做?如何正确地将值嵌入到向量的向量中?

2 个答案:

答案 0 :(得分:11)

使用此:

std::vector< std::vector<int> > matrix(4, std::vector<int>(4));

这会使用std::vector<int>(4)的4个副本初始化您的外部向量。

答案 1 :(得分:2)

在这种情况下,您可以将Björn的方法更进一步,并按照您提供的值概述完全初始化2D矢量:

std::vector<int> tmp(4,0); 
tmp[0] = 1;
tmp[1] = 2;
tmp[2] = 3;
tmp[3] = 1;

std::vector< std::vector<int> > matrix(4, tmp);

可以简单地将其写成:

std::vector<int> tmp(4,1); 
tmp[1] = 2;
tmp[2] = 3;

std::vector< std::vector<int> > matrix(4, tmp);

但为了清晰起见,我常常赞成第一个。