在C++中,std::set
是一个关联容器,它会根据元素的大小自动排序。std::set
内部使用红黑树实现,因此插入和查找操作的时间复杂度都是O(log n)。要将C++ set与算法结合使用,你可以使用以下方法:
- 使用
std::set_intersection
计算两个集合的交集:
#include#include #include #include int main() { std::set s1 = {1, 2, 3, 4, 5}; std::set s2 = {4, 5, 6, 7, 8}; std::vector 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; }
- 使用
std::set_difference
计算两个集合的差集:
#include#include #include #include int main() { std::set s1 = {1, 2, 3, 4, 5}; std::set s2 = {4, 5, 6, 7, 8}; std::vector 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; }
- 使用
std::set_union
计算两个集合的并集:
#include#include #include #include int main() { std::set s1 = {1, 2, 3, 4, 5}; std::set s2 = {4, 5, 6, 7, 8}; std::vector 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; }
- 使用
std::set_symmetric_difference
计算两个集合的对称差集:
#include#include #include #include int main() { std::set s1 = {1, 2, 3, 4, 5}; std::set s2 = {4, 5, 6, 7, 8}; std::vector 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
结合使用,以便更方便地操作和处理集合。