我遇到的问题是创建一个特定的矩阵。
我必须使用一个名为ptr
的数组,其中包含x
个指针。此数组中的每个指针都应指向一个新数组(在本例中为int
数组;然后每个数组都是矩阵中的新行。)
应使用x
创建所有new
个数组;最后,应该可以轻松地使用ptr[a][b]
访问矩阵。
经过大量尝试和失败之后,我希望有人可以帮助我。
提前谢谢!
答案 0 :(得分:2)
因为这显然是家庭作业,所以让我给你一个更好的答案,让你的与你所接受的一起去。
std::vector<std::vector<int>> matrix(10, std::vector<int>(10));
// ^ ^ ^
// Column count ______| |________________|
// |
// |___ Each column is
// initialized with
// a vector of size 10.
这是一个10x10的矩阵。由于我们使用矢量,因此尺寸是动态的。对于静态大小的数组,如果需要,可以使用std::array
。另外,这里是std::vector
的参考。
答案 1 :(得分:1)
如果数组中的指针数已知,您可以简单地使用指向int的原始指针数组:
int* my_array[10]; // 10 int*
然后你应该使用for循环分别为数组中的每个指针分配内存:
for(int i=0; i<10; i++){
// each int* in the array will point to an area equivalent to 10 * sizeof(int)
my_array[i] = new int[10];
}
另一方面,如果你不知道数组的大小,那么你需要一个指向指针的指针:
int** ptr_to_ptr = new int*[10];
请注意,我为10 int*
而非int
分配空间。
一旦你不再需要那个内存,请记住还要为内部指针释放上面分配的内存。