std::priority_queue::top 的 C++ 取消引用
C++ dereferencing for std::priority_queue::top
文档指出 std::priority_queue::top
returns 对 priority_queue 中顶部元素的常量引用,但在打印顶部元素时,未使用一元取消引用运算符。
// priority_queue::top
#include <iostream> // std::cout
#include <queue> // std::priority_queue
int main ()
{
std::priority_queue<int> mypq;
mypq.push(10);
mypq.push(20);
mypq.push(15);
std::cout << "mypq.top() is now " << mypq.top() << '\n';
return 0;
}
top()
是被隐式解引用还是返回值是一个副本?
您不需要取消引用引用。您只需要取消引用指针,而不是引用。
Is top() being implicitly dereferenced or is the returned value a copy?
不,没有价值副本,除非你制作一个。从 reference documentation std::priority_queue::top()
returns 开始 const &T
:
const_reference top() const;
Returns reference to the top element in the priority queue. This element will be removed on a call to pop(). If default comparison function is used, the returned element is also the greatest among the elements in the queue.
如果你使用
int x = mypq.top();
复制完成。如果您使用
const int& x = mypq.top();
您将有一个直接的 (const) 引用。
but when printing the top element, the unary dereference operator is not used.
假设您的意思是 dereferncing operations 之一,根本不需要解引用引用,而是考虑原始值的别名。您可以为 T
重载这些运算符,但这不会影响 std::priority_queue::top()
.
文档指出 std::priority_queue::top
returns 对 priority_queue 中顶部元素的常量引用,但在打印顶部元素时,未使用一元取消引用运算符。
// priority_queue::top
#include <iostream> // std::cout
#include <queue> // std::priority_queue
int main ()
{
std::priority_queue<int> mypq;
mypq.push(10);
mypq.push(20);
mypq.push(15);
std::cout << "mypq.top() is now " << mypq.top() << '\n';
return 0;
}
top()
是被隐式解引用还是返回值是一个副本?
您不需要取消引用引用。您只需要取消引用指针,而不是引用。
Is top() being implicitly dereferenced or is the returned value a copy?
不,没有价值副本,除非你制作一个。从 reference documentation std::priority_queue::top()
returns 开始 const &T
:
const_reference top() const;
Returns reference to the top element in the priority queue. This element will be removed on a call to pop(). If default comparison function is used, the returned element is also the greatest among the elements in the queue.
如果你使用
int x = mypq.top();
复制完成。如果您使用
const int& x = mypq.top();
您将有一个直接的 (const) 引用。
but when printing the top element, the unary dereference operator is not used.
假设您的意思是 dereferncing operations 之一,根本不需要解引用引用,而是考虑原始值的别名。您可以为 T
重载这些运算符,但这不会影响 std::priority_queue::top()
.