c++

C++ set排序如何结合算法使用

小樊
84
2024-11-30 19:08:56
栏目: 编程语言

在C++中,std::set是一个关联容器,它会根据元素的大小自动排序。std::set内部使用红黑树实现,因此插入和查找操作的时间复杂度都是O(log n)。要将C++ set与算法结合使用,你可以使用以下方法:

  1. 使用std::set_intersection计算两个集合的交集:
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>

int main() {
    std::set<int> s1 = {1, 2, 3, 4, 5};
    std::set<int> s2 = {4, 5, 6, 7, 8};

    std::vector<int> result;
    std::set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), std::back_inserter(result));

    for (int i : result) {
        std::cout<< i << " ";
    }

    return 0;
}
  1. 使用std::set_difference计算两个集合的差集:
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>

int main() {
    std::set<int> s1 = {1, 2, 3, 4, 5};
    std::set<int> s2 = {4, 5, 6, 7, 8};

    std::vector<int> result;
    std::set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), std::back_inserter(result));

    for (int i : result) {
        std::cout<< i << " ";
    }

    return 0;
}
  1. 使用std::set_union计算两个集合的并集:
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>

int main() {
    std::set<int> s1 = {1, 2, 3, 4, 5};
    std::set<int> s2 = {4, 5, 6, 7, 8};

    std::vector<int> result;
    std::set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), std::back_inserter(result));

    for (int i : result) {
        std::cout<< i << " ";
    }

    return 0;
}
  1. 使用std::set_symmetric_difference计算两个集合的对称差集:
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>

int main() {
    std::set<int> s1 = {1, 2, 3, 4, 5};
    std::set<int> s2 = {4, 5, 6, 7, 8};

    std::vector<int> result;
    std::set_symmetric_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), std::back_inserter(result));

    for (int i : result) {
        std::cout<< i << " ";
    }

    return 0;
}

这些算法可以与std::set结合使用,以便更方便地操作和处理集合。

0
看了该问题的人还看了