我通过这个 呼叫,但我不能得到相同的原因。这里提到
“更明智的做法是不返还任何价值,并要求 客户端使用 front ()检查队列前面的值”
但是从 front ()检查元素也需要将该元素复制到 lvalue 中。例如,在此代码段中
std::queue<int> myqueue;
int myint;
int result;
std::cin >> myint;
myqueue.push (myint);
/* here temporary will be created on RHS which will be assigned to
result, and in case if returns by reference then result will be
rendered invalid after pop operation */
result = myqueue.front(); //result.
std::cout << ' ' << result;
myqueue.pop();
在第五行上,Cout对象首先创建 myquee.front ()的副本,然后将其赋值给 result。所以,有什么区别呢,弹出函数也可以做同样的事情。