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