簡體   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