如何创建这样的矩阵:
std::vector <std::vector <int*>> matrix;
但是我只找到了这些例子:
std::vector <std::vector <int>> matrix;
OR
std::vector <std::vector <int> *> matrix;
有什么想法吗?
答案 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