我正在实现与硬件通信的C ++代码,硬件运行许多硬件辅助数据结构(直接访问表和搜索树)。所以我需要维护一个本地缓存,它可以在将数据推送到硬件之前存储数据。
我认为复制H / W树结构我可以选择std :: map,但是直接表怎么样(基本上它是作为一个连续的结果数组实现并允许直接访问查找)?
在STL中是否有足够的类似物来实现这样的结构或简单的数组就足够了?
感谢。
答案 0 :(得分:3)
如果您正在使用硬件结构,那么最好使用C struct
和C数组尽可能准确地模仿结构。
这使您能够尽可能准确地映射硬件结构,并使用简单的memcpy
移动数据。
STL可能不会非常有用,因为它在幕后做了很多事情,你无法控制内存布局。这意味着每次硬件写入都会涉及到您可能希望避免的复杂序列化练习。
答案 1 :(得分:1)
我相信你正在寻找std::vector
。或者,如果在编译时知道大小std::array
(从C ++ 11开始)。
答案 2 :(得分:0)
C ++ 11有一个unordered-map和unordered-set,它们类似于哈希表。迭代时地图更快,而查找设置更快。
但首先你应该运行一个分析器来查看你的数据结构是否会降低你的程序速度