选择合适的数据结构

choose appropriate data structure

本文关键字:数据结构 选择      更新时间:2023-10-16

我正在实现C++代码,该代码与运行许多硬件辅助数据结构(直接访问表和搜索树)的硬件通信。因此,我需要维护一个本地缓存,在将数据推送到硬件上之前,该缓存将存储数据。

我认为要复制H/W树结构,我可以选择std::map,但直接表(基本上它是作为结果的顺序数组实现的,并允许直接访问查找)呢?

STL中是否有足够接近的类似物来实现这样的结构,或者简单的数组就足够了?

谢谢。

如果您使用的是硬件结构,那么最好使用C struct s和C数组尽可能精确地模拟这些结构。

这将使您能够尽可能精确地映射硬件结构,并通过简单的memcpy移动数据。

STL可能不会非常有用,因为它在幕后做了很多事情,而且你无法控制内存布局。这意味着每次对硬件的写入都将涉及到一个复杂的序列化练习,您可能希望避免这个练习。

我相信您正在寻找std::vector。或者,如果在编译时已知大小,std::array(从C++11开始)。

C++11有一个无序映射和无序集,它们类似于哈希表。贴图的迭代速度更快,而集合的查找速度更快。

但首先,您应该运行一个探查器,看看您的数据结构是否是降低程序速度的原因