【问题标题】:choose appropriate data structure选择合适的数据结构
【发布时间】:2013-08-27 20:30:47
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 为什么需要'复制'这些硬件数据结构?您如何访问它们,通过 DMA 或仅在总线上寻址?使用std::arraystd::tuple 覆盖它们可能是更好的选择。

标签: c++ data-structures std


【解决方案1】:

如果您正在使用硬件结构,您最好使用 C structs 和 C 数组尽可能准确地模仿这些结构。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      C++11 有一个unordered-mapunordered-set,它们类似于哈希表。地图的迭代速度更快,而集合的查找速度更快。

      但是首先你应该运行一个分析器来看看你的数据结构是否会减慢你的程序

      【讨论】:

        猜你喜欢
        • 2015-12-21
        • 2017-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        相关资源
        最近更新 更多