c++ - C++ 二维数组
问题描述
我正在尝试使用二维数组和 PNG 图像制作一个基本的块加载系统。例如,我只是想知道是否可以创建一个未初始化的数组;
Chunk[][] chunks;
然后根据PNG图像的大小对其进行初始化,并使用不同的rgb像素代表不同的瓦片。
假设图像是 15x25,是否可以用这样的方式初始化二维数组?
chunks = new Chunk[15][25];
或者我应该着手制作一个大数组,而只是将未设置的索引设置为 VOID 瓦片,我可以简单地制作。
谢谢大家的帮助!
解决方案
C++ 不像 C 那样支持变长数组。现代的、惯用的 C++ 也不鼓励使用std::vector
or上的原始数组std::array
,它也可以在 2D 中使用,如下所示:
std::size_t x = /* get X dimension */
std::size_t y = /* get Y dimension */
std::vector<std::vector<Chunk>> chunks(x, std::vector<Chunk>(y));
std::vector
还具有自动大小管理和可变长度初始值设定项的允许性的优点,不像std::array
,据我所知,它只允许在初始化期间使用常量。
推荐阅读
- python - 无法在 Pandas 中保存值
- hadoop - 将目录从一个 Hadoop 集群递归复制到另一个
- amazon-web-services - AWS Lambda:是否始终以 MB 为单位使用最大内存?
- git - 无法为漂亮的图形创建全局 git 别名
- c++ - 如何在 Windows 上编译 Libsmscout 库?
- iis-8.5 - 升级到 Tomcat 8.5 为工作应用程序 URL 提供 500 个内部服务器
- java - 在 Eclipse 上获取 JavaFX
- python - 导入和命名远程文件
- ios - 使用 UICollectionViewLayout 设置和更改 UICollectionView 单元格的宽度/高度
- javascript - 在 React 中使用 map() 时无法通过 API 调用访问数组数据