【问题标题】:C++ Deque / Vector Pushing items in the front instead of push_backC++ Deque / Vector 在前面推送项目而不是 push_back
【发布时间】:2011-10-08 22:30:38
【问题描述】:

我要做的是创建一个读取器类,它将获取第一个元素,评估它然后删除它。所以这意味着项目必须添加在前面而不是后面。

这是我需要做的。伪代码。

void Add( int messageCode ){ if(m_pList && messageCode!=0xFF)m_pList->push_front(messageCode);  } // Adding a message; Added check if input is 0xFF.

而不是

void Add( int messageCode ){ if(m_pList && messageCode!=0xFF)m_pList->push_back(messageCode);  } // Adding a message; Added check if input is 0xFF.

【问题讨论】:

  • Deque push_front(),那么有什么问题呢?
  • @leftaroundabout 一百万谢谢!我虽然双端队列就像向量,只有 push_back/insert 支持。将其添加为答案,以便我接受。

标签: c++ vector elements deque


【解决方案1】:

如果您需要 FIFO,请查看 std::deque 类及其方法,例如 push_frontemplace_front

如果您需要 LIFO,请查看 std::stack 类。

【讨论】:

    【解决方案2】:

    两件事。

    std::deque 有一个push_front 函数。它还有一个pop_front 函数,可以将其删除。事实上,从前面快速插入/移除是deque 的一半。

    另一件事是:你为什么要从前面推/弹出?向后推/弹出有什么问题吗?您可以像使用常规堆栈一样使用std::vector,只需使用push_backpop_backback。这与推到前面几乎相同。除非您需要以某种方式访问​​非前端元素,否则这似乎是一种完全合法的处理方式。

    【讨论】:

      【解决方案3】:

      由于出队 push_front,我想您对考虑到您的主题中提到的向量的解决方案感兴趣。 您可以使用insert 函数,该函数在dequeue 中也可用。但正如 API 中提到的,这可能效率不高。要删除此元素,您还可以使用两者都提供的擦除功能。

      【讨论】:

        猜你喜欢
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多