c++-如果包含重复元素 如何合并多个vector?

  • Post category:other

在C++中,如果要合并多个vector并去除重复元素,可以使用以下两种方法:

方法1:使用set

可以使用set容器来合并多个vector并去除重复元素。以下是示例代码:

#include <iostream>
#include <vector>
#include <set>

using namespace std;

int main() {
    vector<int> v1 = {1, 2, 3};
    vector<int> v2 = {2, 3, 4};
    vector<int> v3 = {3, 4, 5};

    set<int> s;
    for (auto v : {v1, v2, v3}) {
        s.insert(v.begin(), v.end());
    }

    vector<int> result(s.begin(), s.end());
    for (auto i : result) {
        cout << i << " ";
    }
    cout << endl;

    return 0;
}

在上面的示例中,我们首先定义了三个vectorv1v2v3,分别包含不同的元素。然后,我们使用set容器来合并这三个vector,并去除重复元素。最后,我们将set容器中的元素复制到一个新的vector中,并输出结果。

方法2:使用sort和unique

可以使用sort和unique算法来合并多个vector并去除重复元素。以下是示例代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<int> v1 = {1, 2, 3};
    vector<int> v2 = {2, 3, 4};
    vector<int> v3 = {3, 4, 5};

    vector<int> result;
    for (auto v : {v1, v2, v3}) {
        result.insert(result.end(), v.begin(), v.end());
    }

    sort(result.begin(), result.end());
    auto it = unique(result.begin(), result.end());
    result.erase(it, result.end());

    for (auto i : result) {
        cout << i << " ";
    }
    cout << endl;

    return 0;
}

在上面的示例中,我们首先定义了三个vectorv1v2v3,分别包含不同的元素。然后,我们使用insert算法将这三个vector合并到一个新的vector中。接着,我们使用sort算法对新的vector进行排序,并使用unique算法去除重复元素。最后,我们输出结果。

结论

在本文中,我们介绍了两种方法来合并多个vector并去除重复元素:使用set容器和使用sort和unique算法。这些方法都可以用于合并多个vector,并去除其中的重复元素。同时,本文还提供了两个示例,演示如何使用这些方法进行vector合并和去重。