【问题标题】:Good container for insert-in-order? C++用于按顺序插入的好容器? C++
【发布时间】:2011-03-13 08:53:52
【问题描述】:

您好,我想知道按顺序插入元素的最佳容器是什么?我认为不需要地图,因为我只是要访问前面的元素,弹出它然后插入更多元素(我正在实现一个带权重的寻路算法(Dijkstra))

我可能自己使用了一个列表并按顺序插入,但无法平分(因为您从前面或后面开始访问)会妨碍性能。

【问题讨论】:

    标签: c++ path-finding


    【解决方案1】:

    如果您只需要访问正面和背面,std::deque(双端队列)非常适合。

    但是,对于 Dijkstra 算法,您不需要优先级队列吗?

    【讨论】:

    • 我正在插入需要按顺序排列的随机元素。我需要为优先队列指定一个容器类型,我应该使用什么?
    • 哦,您的意思是您希望队列根据某些标准进行排序;我把它读作“插入顺序”。那么std::priority_queue呢? :)
    • Kk 但它说它只能使用向量或队列作为内部容器:/
    • @Alasdair:它可以使用std::vector 或std::deque 作为底层容器。但这有关系吗?如果您使用std::priority_queue 成员函数,您将不会直接访问底层容器。
    • 不,我只是关心效率,尽管顺序访问容器确实有意义,因此可以有效地一分为二,但它只是主要操作将按顺序插入。
    【解决方案2】:

    如果您使用 C++,则在 <queue> 头文件中有一个 std::priority_queue 容器适配器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 2012-07-13
      • 2017-08-16
      • 1970-01-01
      相关资源
      最近更新 更多