在C++中,std::set
是一个关联容器,它会根据元素的大小自动排序。std::set
内部使用红黑树实现,因此插入和查找操作的时间复杂度都是O(log n)。要将C++ set与算法结合使用,你可以使用以下方法:
- 使用
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;
}
- 使用
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;
}
- 使用
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;
}
- 使用
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
结合使用,以便更方便地操作和处理集合。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1202266.html