c++ - 需要缓存友好的数据结构来将字母的邻居存储在二维数组中

标签 c++ c performance caching optimization

假设以下是我们正在操作的二维数组

a b c d
e f g h
i j k l
m n o p

“f”的周围邻居是 [a b c e g i j k]。我正在尝试创建一个缓存友好的数据结构来存储节点的邻居。现在我有这样的东西

struct Neighbor{
   size_t neighborPosition[8][2];
   size_t size;
};

typedef size_t Position[2];
typedef Neighbor** NeighborTable;

请注意,一个节点最多可以有 8 个邻居。有人有什么建议吗?我需要该结构是一个恒定时间的邻居查找,所以我将预先计算每个节点的邻居。

最佳答案

除了边缘单元格外,每个单元格在相对位置方面都有相同的邻居。但是如果你添加一个边框(在开始和结束处额外的行和列),并用一个让你知道它是边框的值填充它,你根本不需要任何数据结构来识别邻居。

关于c++ - 需要缓存友好的数据结构来将字母的邻居存储在二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253241/

相关文章:

c# - 调整 List<T> 的容量

java - 从多个文件读取数据并应用业务逻辑

c++ - std::condition_variable 的谓词是否在锁下执行?

c++ - `QVirtualKeyboard`的激活和部署(在Windows中)

C - ~ 是什么意思

c++ - 你如何制作linux GUI?

c++ - 为什么需要指针来初始化堆上的对象,而不是堆栈上的对象?

c++ - 存储稍后转发的变量参数

c - scanf() - 获取字段计数并检查 EOF

html - 加速 DOM 树的渲染