0

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

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

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.
4

3 回答 3

4

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

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

于 2011-10-08T22:35:07.943 回答
2

两件事情。

std::deque有一个push_front功能。它还有一个pop_front功能,就是去掉它。实际上,从前面快速插入/移除是 a 点的一半deque

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

于 2011-10-08T22:38:32.620 回答
0

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

于 2011-10-08T22:42:22.307 回答