c++ - 带有未知大小的 STL 容器的网格类(不能使用矢量)
问题描述
我需要创建一个网格类,该类使用 STL 容器来存储单元格(预定义的枚举),用于生命游戏应用程序。本质上,头文件需要类似于:
class Grid {
private:
std::array<Cell, N> grid_array;
public:
Grid(const unsigned int width, const unsigned int height);
}
其中数组的长度 (N) 在构造函数中设置为 width*height。
代码必须遵守一个使用 STL 容器的规范,但是它已经被强烈暗示std::vector
不应该使用。
我考虑过使用指向 an 的指针,std::array
但已经读过,由于std::arrays
不同的大小是根本不同的类型,因此不可能实现指针。有没有可行的解决方案std::array
?
解决方案
有什么解决方案可以让 std::array 起作用吗?
不,除非网格的大小在编译时已知,并且您可以将其设为模板参数。
我会用std::vector
. 另一个选项是std::unique_ptr<Cell[]>
,这需要更多的工作(如果您想Grid
可复制,则必须提供自定义复制构造函数和赋值运算符)。
推荐阅读
- angular - JWT 和防伪令牌
- graph - 尝试在 Gnuplot 中绘制多个图形时出错
- c++ - 为什么我从串口读取垃圾?
- javascript - 通过 AJAX 传递带有函数的 JSON
- android - java.lang.SecurityExcption:WifiService:既不是 usr 10140 也不是当前进程 hs andrid.prmission.CHANGE_WIFI_STATE
- vue.js - 没有从 rails vue.js 表单返回条纹令牌
- f# - 如何将浮点数 (1,2) 拆分为 1 和 2 个整数?
- angular - 需要 angular-google-maps fitBoundsAccessor 抽象类示例
- typescript - 将打字稿编译成不同的路径
- python - 如何使用 matplotlib 绘制 collections.Counter 直方图?