2011-10-08 59 views
0

我想要做的是创建一个读取器类,它将获得第一个元素,评估它,然后删除它。这意味着这些项目必须在前面而不是在后面添加。C++ Deque/Vector在前端推送项目而不是push_back

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

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. 
+1

您需要一个堆栈 – James

+7

Deque _has_'push_front()',那有什么问题? – leftaroundabout

+0

@leftaroundabout万分感谢!我虽然deques像矢量,只有push_back /插入支持。添加它作为答案,所以我可以接受它。 –

回答

4

如果你需要FIFO,看看std::deque类和它的方法,如push_frontemplace_front

如果您需要LIFO,请参阅std::stack课程。

1

两件事。

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

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

0

由于出列 push_front,我想你有兴趣考虑在你的主题中提到的矢量解决方案。 您可以使用insert功能,该功能也可在dequeue中使用。但正如API中提到的那样,这可能效率不高。要删除这个元素,你也可以使用擦除功能,也由两者提供。

相关问题