C ++ Deque / Vector推送前面的项目而不是push_back

时间:2011-10-08 22:30:39

标签: c++ vector elements deque

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

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

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.

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

两件事。

std::deque具有push_front功能。它还有一个pop_front函数来删除它。实际上,从前面快速插入/移除是deque的一半。

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

答案 2 :(得分:0)

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