📜  将元素从向量移动到 unordered_set - C++ (1)

📅  最后修改于: 2023-12-03 15:39:14.785000             🧑  作者: Mango

将元素从向量移动到 unordered_set - C++

在编写代码时,我们可能需要将向量中的元素移动到 unordered_set 中。在本文中,我们将探讨如何在 C++ 中实现此操作。

1. 初始化向量和 unordered_set

首先,我们需要定义一个向量和一个 unordered_set,以便在其中存储数据。

定义一个向量:

std::vector<int> vec = {1, 2, 3, 4, 5};

定义一个 unordered_set:

std::unordered_set<int> uset;
2. 将元素从向量移动到 unordered_set

我们可以使用 std::move 将元素从向量移动到 unordered_set。如下所示:

for (auto&& v : vec) {
    uset.insert(std::move(v));
}

在这个例子中,我们使用 auto&& 来遍历向量中的每个元素。当一个元素被移动到不同的容器时,它变得不再持有 vec 中原始的值。

如果需要,我们可以在将元素移动到 unordered_set 之前对它们进行修改。例如,以下代码使用平方替换了向量中的整数,并将它们移动到 unordered_set:

for (auto&& v : vec) {
    v = v * v;
    uset.insert(std::move(v));
}

注意,在移动元素之后,向量 vec 中的元素已被移动,变成了未初始化值。

3. 完整代码
#include <iostream>
#include <vector>
#include <unordered_set>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    std::unordered_set<int> uset;

    for (auto&& v : vec) {
        v = v * v;
        uset.insert(std::move(v));
    }

    std::cout << "unordered_set: ";
    for (auto&& u : uset) {
        std::cout << u << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:

unordered_set: 25 4 1 16 9

以上就是如何将元素从向量移动到 unordered_set 的介绍。