从STL堆栈/队列的顶部/前端移动是否安全?

问题描述 投票:3回答:1

这个问题同时适用于堆栈和队列,但是为了简单起见,在这里我只提到一个堆栈。

假设我们将非常量对象压入std::stack,从栈顶弹出时,将栈顶的对象移动到临时变量中,然后像下面这样弹出,这是安全的吗?] >

std::stack<std::string> st;
st.emplace("asdf");
auto popped = std::move(st.top());
st.pop(); 

这个问题适用于堆栈和队列,但是为了简单起见,在这里我只提到一个堆栈。假设我们将非常量对象推入std :: stack时,从...

c++ stack move
1个回答
7
投票

是的,如果您使用堆栈的非常量版本,那是安全的。 (对于堆栈的const版本,将出现编译错误)

© www.soinside.com 2019 - 2024. All rights reserved.