gpt4 book ai didi

c++ - C++ 上二维数组的大小

转载 作者:行者123 更新时间:2023-12-01 14:58:03 30 4
gpt4 key购买 nike

我已经使用以下方式声明了一个二维数组

for(int i = 0; i < rowCount; ++i){//rowCount = 5
a[i] = new int[colCount]; //colCount = 6
}

我想检查这个数组的大小,我知道我可以只看我在声明数组时放入的数字,但我想看看代码是否按我预期的方式工作。

我使用“sizeof(a)/sizeof(a[0])”来获取行数,但它没有给出预期的数字

最佳答案

您可以使用 std::vector<std::vector>>按照建议采取他们的 .size()方法,但是这不是最内存友好的。我建议将您的数组数组(也称为指针指针)包装在一个小型专用类中,该类在内部跟踪大小,允许您访问原始数据并且还有一个 getWidth。和 getHeight功能。您还可以轻松地为其提供方便的功能,例如 .setAll(T value)并使用模板来支持任何数据类型。

// Example program
#include <iostream>
#include <string>

template<class T>
class RawGrid
{
private:
int width, height;

public:

RawGrid(int width, int height) : width(width), height(height)
{
data = new T*[width];
for(int i = 0; i < width; i++)
data[i] = new T[height];
}
~RawGrid()
{
if (data)
{
for(int i = 0; i < width; i++)
delete[] data[i];
delete[] data;
}
}

int getWidth() {
return(width);
}
int getHeight() {
return(height);
}

T** data = nullptr;
};


int main()
{
RawGrid<int> grid(100, 50);

grid.data[10][25] = 20;

std::cout << "Data value: " << grid.data[10][25] << "!\n";
std::cout << "Width: " << grid.getWidth() << "!\n";
std::cout << "Height " << grid.getHeight() << "!\n";
}

关于c++ - C++ 上二维数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60408775/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com