【发布时间】:2021-12-03 20:53:04
【问题描述】:
我想用 C++ 设计一个填字游戏编辑器。它是一个由块组成的网格,每个块包含一个字母(或在两个单词之间为黑色),可能是一个数字和一条粗或细的边界线。 因此,块是它们的容器类。网格是块的容器。但是我将如何构建网格?
- 原始二维数组:
Block grid[row][column]? - 向量的向量:
vector<vector<Block>>? - 两个向量,一个用于行,一个用于列:
vector<Block> row; vector<Block> column? - 一个映射,其中键是行/列对,值是块:
map<int[2], Block>?
【问题讨论】:
-
如果网格的大小是编译时间常数,我更喜欢 std::array
-
这确实是基于意见的答案,也取决于上下文。如果大小是固定的,使用数组,如果大小可以改变,使用向量。地图在这里太过分了。
-
解决方案 1. 只有在编译时知道
row和column时才有效。我不明白解决方案 3. 如何工作。解决方案 4. 似乎过于复杂,少说。 -
@Damien:向量中序列中一行中的所有块,对于另一个向量,列中的所有块都相同。