前面()和后面()分配队列中的值的目的是什么? (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()
你就必须从队列中删除,检查值,然后用它或把它放回去,如果条件不满足。使用此访问器方法,您可以在更改基础数据结构之前轻松检查它。
答
没有与这些调用的返回值来完成,他们不改变队列本身,所以你是在说,你的队列将是相同的,没有他们是正确的。您的编译器也可能已经注意到了这一点,并优化了它们。