[英]Top then Pop Usage
我是 C++ 的新手,背景是 Python。 我目前正在学习deque
,我对如何弹出最后一个元素并使用它感到困惑。
从cppreference.com中提到pop_back
将删除容器的最后一个元素,并且对已删除元素的引用无效。
例子:
std::deque<int> numbers = {1, 2, 3};
int topNumber = numbers.back(); // Return reference to top element
numbers.pop_back(); // remove the last element and now topNumber reference is invalidates
问题:弹出后如何使用顶部元素? Does.back() 在上面的例子中返回一个副本,如果是,为什么?
Does.back() 在上面的例子中返回一个副本
不, back()
返回对队列中最后一个值的引用。
int topNumber = numbers.back();
该引用被分配给一个int
。 这有效地将引用的 object 复制到一个完全不同且不相关的 object 中,称为topNumber
。
当对某个 object 的引用被分配给其他东西时,它本身不是一个引用,被引用的 object 的副本被制作,这就是 C++ 的工作方式(如果它被分配给一个引用,副本被制作成被引用的分配给目的)。
从那时起,可以删除deque
中的最后一个值。 它会消失的。 但它的副本仍保留在topNumber
中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.