2013-08-27 94 views
0

我正在實現與運行大量硬件輔助數據結構(直接訪問表和搜索樹)的硬件進行通信的C++代碼。所以我需要維護一個本地緩存,這個緩存可以在將數據壓入硬件之前存儲數據。選擇合適的數據結構

我認爲複製H/W樹結構我可以選擇std :: map,但直接表(基本上它是作爲結果的順序數組實現並允許直接訪問查找)呢?

STL中有足夠近似的類似物來實現這樣的結構還是簡單的數組就足夠了?

謝謝。

+1

爲什麼你需要_'replicate'_這些硬件數據結構?你如何通過DMA訪問它們,或者只是在總線上尋址?可能是使用'std :: array'或'std :: tuple'覆蓋它們的更好選擇。 –

回答

1

我相信你正在尋找std::vector。或者,如果在編譯時已知大小,則std::array(自C++ 11起)。

3

如果您正在使用硬件結構,則最好使用C struct s和C數組儘可能精確地模擬結構。

這將使您能夠儘可能準確地映射硬件結構,並使用簡單的memcpy來移動數據。

STL可能不會非常有用,因爲它在幕後做了很多事情,並且您無法控制內存佈局。這將意味着每次寫入硬件都會涉及到一個複雜的序列化練習,您可能需要避免。

0

C++ 11有一個unordered-mapunordered-set,它們類似於散列表。迭代的地圖速度更快,而查找速度更快。

但首先你應該運行探查器,看看你的數據結構是什麼減慢你的程序下來