gpt4 book ai didi

c++ - 基于范围的for循环将对象 move 到另一个容器中?

转载 作者:行者123 更新时间:2023-11-28 04:07:48 26 4
gpt4 key购买 nike

理想情况下我想做这样的事情,但这安全/正确吗?当从 some_list move 到 other_list 时,您正在编辑 some_list 的内容,并且每个后续迭代都将无效,因为对象都包含空内容。

for (auto& object : some_list) {
other_list.emplace_back(std::move(object));
}

有什么方法可以让这段代码更高效/更安全/更好,或者这是我可能做到的最好方法吗?

最佳答案

仅仅修改包含的对象不会使迭代器失效,所以这段代码是安全的。不过,没有必要自己编写循环,因为有 std::move 算法:

#include <algorithm>
#include <iterator>

template<typename InContainer, typename OutContainer>
void append_back(InContainer& some_list, OutContainer& other_list)
{
using std::begin;
using std::end;
std::move(begin(some_list), end(some_list), std::back_inserter(other_list);
some_list.clear();
}

关于c++ - 基于范围的for循环将对象 move 到另一个容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58397826/

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