前面()和后面()分配队列中的值的目的是什么? (C++)

问题描述:

我宣布:前面()和后面()分配队列中的值的目的是什么? (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()的调用。根据我的理解,他们分别返回了对第一个或最后一个元素的引用,但是我没有看到如果这些调用没有完成,我的列表将如何变得不同。它们有什么作用?

抱歉,如果这似乎微不足道,但我试图找出这些电话的有目的的,还是我的教授,就是想用我的螺丝。

他们给你一个参考,但如果你想用它做什么,那么你必须使用该引用。

例如

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

那么你应该有......

8,19 

自己行仅仅调用Q.front()或Q.back()没有任何影响。这些通常被称为访问函数,它们允许您访问一个值(如果需要,您可以修改它),但不会修改其基础数据结构。

他们偷看队列中的值,而不必删除并把它们放回去。它可能在某些情况下是有用有用!

例如,你会怎么做决定从队列中删除第一个元素只是如果它大于X?

没有front()你就必须从队列中删除,检查值,然后用它或把它放回去,如果条件不满足。使用此访问器方法,您可以在更改基础数据结构之前轻松检查它。

没有与这些调用的返回值来完成,他们不改变队列本身,所以你是在说,你的队列将是相同的,没有他们是正确的。您的编译器也可能已经注意到了这一点,并优化了它们。