2012-02-15 84 views
1

我想用C++或Vala做一个小型人工生命模拟器。我无法决定如何编写一个基因类。基因是由一组汇编样的指令存储在一个很小的类,像:什么是存储小指令列表的最佳方式?

rnd 0 10 
add .0 20 
mov .0 $accel 

首先,我应该用联阵列(STD ::清单或std ::向量)的名单?

其次,我应该将数组封装到类中还是将其公开?如果我选择前者,我将不得不包装列表的许多功能。后者违反封装。

+0

你有没有考虑过使用数据库? – 2012-02-15 23:51:07

回答

3
  1. 几乎肯定是vector;一个list只会给你开销(在使用的内存和浏览列表的时间方面),给你没有好处(我不认为你的基因需要在中间连续插入代码,即使如此,如果数据是小vector仍然赢)。

  2. 如果这个类的客户端需要几乎自由地处理指令列表,我认为没有用它来封装它,然后添加大量的小包装函数。

1

如果你知道确切的数字或最大(比预期的不大得多)元素的数量,那么你最好是使用的std::array<T>(也有一个,如果你的不倒C++ 11还)。

元素的数量是不知道然后使用std::vector<T>

如果元素的数量很可能会经常变化,然后用std::deque<T>

,如果你想的指令集的容器,那么你必须做出更多的预测。

,你可能最终与

std::deque<std::array<T, 4> > life_forms; 

,如果您预计会频繁增加生命形式和每一个生命形式究竟有4个指令具体情况将是一件好事。

注意我会非常不鼓励使用列表,除非你想频繁地删除链接。

相关问题