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