2012-02-15 119 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個指令具體情況將是一件好事。

注意我會非常不鼓勵使用列表,除非你想頻繁地刪除鏈接。

相關問題