繁体   English   中英

Top then Pop 用法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM