矢量int矢量

时间:2018-12-20 20:44:32

标签: c++ visual-studio

如何创建这样的矩阵:

std::vector <std::vector <int*>> matrix;

但是我只找到了这些例子:

std::vector <std::vector <int>> matrix;

OR

std::vector <std::vector <int> *> matrix;

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

std::vector<std::vector<int *>> matrix;正是您需要的。那说:

// This is a vector
//               ...which itself contains vectors 
//                                             ...of int pointers
std::vector<        std::vector<                  int *>         > matrix;

这是初始化方法:

std::vector<std::vector<int *>> matrix;
matrix.resize(10); // matrix now contains 10 vectors of int pointers
for(int i = 0; i < 10; ++i)
{
    matrix[i].resize(20);
}
// matrix is now a 10x20 two-dimensional array

// add another row, to get to 11x20
std::vector<int *> last_row(20);
matrix.push_back(last_row);

有帮助吗?

编辑:针对评论中的问题,以下是如何使用一堆new ed int来初始化它的方法。确实不建议这样做-追逐指针,加上语法上的开销不是仅仅使用vector-of-vectors-of-int即可胜出……但这肯定是 legal < / em>。

std::vector<std::vector<int *>> matrix;
matrix.push_back(std::vector<int *>());
matrix[0].push_back(new int(10)); // matrix is now 1x1
std::cout << *(matrix[0][0]) << std::endl; // prints 10