c++中的数据结构
Data Structure in C++
我正在研究一个问题,并在c++中实现一个算法。该算法需要一个类似于2D数组(例如20x20数组)的数据结构。主要的不同之处在于,每个单元都必须连接周围的8个相邻单元(即上、下、左、右和四个角)。
每个成员的状态会根据邻居的数据变化而变化。所以,每个细胞都是动态生长的。每个单元需要不断检查其所有邻居的数据。
基于这个要求,我想象这个数据结构是圆形的,就像一个环面或一个百吉饼,它没有边缘,所以每个细胞都是相互连接的。
对这个数据结构的表示有什么想法吗?我在考虑使用邻接链表的图,其中每个成员包含周围八个邻居的链表。你觉得呢?我的思路对吗?
寻找一个生命游戏的实现,它用0和1来做这个。除非你要做一些非常复杂的事情,将解决方案收敛到每次迭代的一组约束中,否则你只需要每次循环遍历数组,引用上一个完整的代,并在每次循环结束时更新所有内容以创建新一代。
这主要取决于你的问题,但我对邻接链表有疑问。如果你的邻居是动态增长的,那就更合适了,但在这种情况下,它们似乎是固定的。所以你不妨使用一个指向邻居的数组。
问题陈述似乎不太清楚:
每个成员的状态会根据邻居的数据变化而变化。所以,每个细胞都是动态生长的。每个单元需要不断检查所有相邻单元的数据。
这到底是什么意思?假设只有一个值发生了变化。然后所有的邻居都应该改变,所有的邻居都应该改变,直到所有的值都改变。但是原始值呢,在改变之后,它的邻居也改变了,它是否应该再次改变作为响应(并且无限期地保持变化-听起来像一个坏主意)?
我们有一个简单的例子,一个1x4的二维数组A B C D
,其中a是B和D的邻居,B是a和C的邻居,等等。
假设A变了。那么B和D也应该改变,现在C应该改变,它应该根据B和D的变化立即改变吗?还是先B后D ?还是别的什么?
在你的问题中constantly
和dynamically
的含义/定义是什么?是否有时间步骤,例如
time 1: a cell changes
time 2: all immediate neighbours change simultaneously
time 3: neighbours of immediate neighbours change
(and what about the original cell at this point?)
time 4: etc.
在大多数情况下我会(大多数人)提出一个基于2维数组结构,但随着setter方法,,在调用时,会自动改变传播。但这取决于你对constantly
和dynamically
的定义
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 尝试构建"lock-free"数据结构C++
- 设计将引用元素移动到开头的数据结构.C++
- 在学习数据结构之前对STL有一个了解是好的吗?
- 如何解析表示树状数据结构的字符串
- 我对数据结构、双向链表有一些问题
- googletest:测试太大的数据结构
- C++中deque数据结构的大O是什么?
- 我可以使用哪种数据结构来处理这种方式
- 将文本文件解析为树状数据结构
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 带参数的数据结构的全局声明