2013-08-27 93 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,它们类似于散列表。迭代的地图速度更快,而查找速度更快。

但首先你应该运行探查器,看看你的数据结构是什么减慢你的程序下来