用静态2d数组定义类的方便方法是什么(并且2d数组的大小只有在编译时才知道)
What is a convenient way to define a class with a static 2d array (and the size of the 2d array is known only during compile time)?
下面的示例代码显示了我要做的事情:
template<int NX, int NY>
class Array
{
public:
float v[NX][NY];
};
void main()
{
Array<10,20> grid;
}
上面的代码不会编译,但它显示了我想要做的事情。我们有一个包含数组的类,而数组类直到编译时才知道它的大小。有简单的方法吗?
编辑:我想写一个简单的可重用数组类。这意味着我需要找到一种将数组大小与类分离的好方法。
我还希望这个类是快速的(简单的),所以它不能被动态分配。这意味着在运行时无法给出大小。
我也不想使用预处理器来定义大小,因为这意味着我将不得不经历在某个地方更改数字的麻烦。这还不够方便。
基本上,类直到编译时才知道自己的大小,因为这时主函数告诉类的大小。
编辑:上面的代码很好。
除了main
没有返回int
之外,这是合法的代码,应该编译。事实上,在某些编译器上,这将在main
不返回int
的情况下进行编译,例如VC++,但这是非标准行为。
您还可以在编译时存储大小,这样就不必手动计算。
#include <iostream>
template<int NX, int NY>
class Array
{
public:
float v[NX][NY];
int size() const { return ArraySize; }
private:
enum { ArraySize = NX * NY }; // You can also store rows/cols individually
};
int main()
{
Array<10,20> grid;
std::cout << grid.size();
return 0;
}
Boost.MultiArray可能适合您的需求。
相关文章:
- 2D数组来自文本输入,中间有空格
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在C++函数中声明静态 2D 数组?
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 使用矢量将文本文件中的输入存储到 2D 数组中
- 获取 2D 数组 c++ 中的所有数字对
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 如何在构造函数中使用初始值设定项设置具有相同值的 2d 数组?
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 如何打印 2D 字符数组C++
- 如何将数组 2d 作为参数从函数传递并返回数组 2d 此函数
- 数组 2D 多个值
- 创建数组数组 (2D),而无需在 Java 中初始化内部数组
- 如何在C++中将文本文件传输到数组2D
- 从同一类的另一个方法调用数组2D-C++
- 获取地址在数组2d中的位置