2011-10-08 62 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中提到的那樣,這可能效率不高。要刪除這個元素,你也可以使用擦除功能,也由兩者提供。

相關問題