gpt4 book ai didi

c++ - 有效地将 std::unordered_set 的内容移动到 std::vector

转载 作者:可可西里 更新时间:2023-11-01 18:26:12 28 4
gpt4 key购买 nike

在我的代码中,我有一个 std::unordered_set,我需要将数据移动到一个 std::vector 中。我在获取数据时使用 std::unordered_set 以确保在转换为 std::vector 之前仅存储唯一值。我的问题是如何最有效地将内容移动到 std::vector?移动数据后,我不需要 std::unordered_set。我目前有以下内容:

std::copy(set.begin(), set.end(), std::back_inserter(vector));

最佳答案

在 C++17 之前,你能做的最好的事情是:

vector.insert(vector.end(), set.begin(), set.end());

set 的元素是const,因此您不能从它们中移动 - 移动只是复制。


在 C++17 之后,我们得到 extract() :

vector.reserve(set.size());
for (auto it = set.begin(); it != set.end(); ) {
vector.push_back(std::move(set.extract(it++).value()));
}

虽然根据您的评论您的数据是double,但这无关紧要。

关于c++ - 有效地将 std::unordered_set 的内容移动到 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519867/

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