2014-02-13 21 views
2

我在MACxcode)中使用boost庫。我有兩個關於boost::circular_buffer的問題。如何從circular_buffer獲取元素

1 - 我得到的語法錯誤,宣佈circular_buffer

boost::circular_buffer<int> cb(10); 

Expected parameter decelerator 
Expected ')' 

2時 - 第二個問題是,當我使用的push_back,如何提取/得到circular_buffer元素添加元素爲boost::circular_bufferpop_front不給元素。

+0

你閱讀文件? http://www.boost.org/doc/libs/1_55_0/doc/html/circular_buffer/example.html'front()'和'pop_front()'或'back()'和'pop_back()'。 – Chad

+0

是的,這個例子不起作用,在(10)行 boost :: circular_buffer cb(10);其次,我不想像cb [0],cb [1]那樣將循環隊列編入索引。 'pop_front','pop_back'不會給出元素(可能是我在這裏錯了,但是示例沒有使用這些函數來獲取元素) –

+0

溝道錯誤消息中使用單詞'decelerator'的編譯器。它只會降低你的速度:/ – sehe

回答

4

boost::circular_buffer<T>::front()讓你在「前」一個參考要素,而boost::circular_buffer<T>::pop_front()將刪除該元素。

boost::circular_buffer<T>::back()爲您提供了對後面元素的引用,而boost::circular_buffer<T>::pop_back()刪除了該元素。

看來你的語法錯誤是從the most vexing parse.導致嘗試,而不是:

boost::circular_buffer<int> cb; 
cb.set_capacity(10); 

或者更簡潔地說:

boost::circular_buffer<int> cb((10)); 
+0

謝謝Chad,set_capacity正常工作,但cb((10))給出同樣的錯誤。 –