2010-03-19 39 views
2

我宣佈:前面()和後面()分配隊列中的值的目的是什麼? (C++)

queue<int, list<int> > Q 

經過一系列的電話:

Q.push(37); 
Q.pop(); 
Q.push(19); 
Q.push(3); 
Q.push(13); 
Q.front(); 
Q.push(22); 
Q.push(8); 
Q.back(); 

我得到: 19-> 3-> 13-> 22-> 8-> NULL

我沒有得到的是對Q.front()和Q.back()的調用。根據我的理解,他們分別返回了對第一個或最後一個元素的引用,但是我沒有看到如果這些調用沒有完成,我的列表將如何變得不同。它們有什麼作用?

抱歉,如果這似乎微不足道,但我試圖找出這些電話的有目的的,還是我的教授,就是想用我的螺絲。

回答

9

他們給你一個參考,但如果你想用它做什麼,那麼你必須使用該引用。

例如

Q.push(37); 
Q.push(19); 
Q.front() = 8; 

那麼你應該有......

8,19 

自己行僅僅調用Q.front()或Q.back()沒有任何影響。這些通常被稱爲訪問函數,它們允許您訪問一個值(如果需要,您可以修改它),但不會修改其基礎數據結構。

1

他們偷看隊列中的值,而不必刪除並把它們放回去。它可能在某些情況下是有用有用!

例如,你會怎麼做決定從隊列中刪除第一個元素只是如果它大於X?

沒有front()你就必須從隊列中刪除,檢查值,然後用它或把它放回去,如果條件不滿足。使用此訪問器方法,您可以在更改基礎數據結構之前輕鬆檢查它。

2

沒有與這些調用的返回值來完成,他們不改變隊列本身,所以你是在說,你的隊列將是相同的,沒有他們是正確的。您的編譯器也可能已經注意到了這一點,並優化了它們。

相關問題