gpt4 book ai didi

C++ STL 容器 - move 弹出

转载 作者:行者123 更新时间:2023-12-04 12:04:00 24 4
gpt4 key购买 nike

是否有一个 STL 容器(没有 Boost)可以从中删除元素并将其 move 到左值?

假设我有一个 std::vector大对象和一个变量,我想从 vector 中弹出一个元素。

var = vec.back();  // non-move assign op
vec.pop_back(); // dtor

var = containerWithMovePop.pop_and_return(); // move assign-op

性能并不那么重要,我只是想知道它是否可能。

最佳答案

正如@aeschpler 所说,这有效

auto var = std::move(vec.back()); 
vec.pop_back();
vec.back() 将是空的(如果是字符串)或相同(如果是整数),或者在 back 和 pop_back 之间的任何东西(取决于类型),但这很好。当析构函数在 pop_back() 中运行时,那里几乎没有什么可做的。
既然我们有 move 语义,我们可能会在 future 让 pop_back() 返回 T(正如 ppl 所指出的,我们在指定 std::vector<> 时没有这样做),但它可能是一种新方法,因此不会破坏向后兼容性。

关于C++ STL 容器 - move 弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43416087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com