头文件
#include <set>
有序性
std::set<int> set_test;
set_test.insert(2);
set_test.insert(1);
set_test.insert(3);
for(auto &v:set_test)
{
std::cout << v << " ";
}
输出
1 2 3
差集
std::set<int> set_a{2, 1, 3};
std::set<int> set_b{4, 3, 2};
std::vector<int> vec_c(std::max(set_a.size(), set_b.size()));
auto iter = std::set_difference(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), vec_c.begin());
vec_c.resize(iter - vec_c.begin());
for (auto &v : vec_c)
{
std::cout << v << " ";
}
输出
1
封装成函数
template <typename T>
std::vector<T> SetDifference(const std::set<T> &set_a, const std::set<T> &set_b)
{
std::vector<int> res(std::max(set_a.size(), set_b.size()));
auto iter = std::set_difference(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), res.begin());
res.resize(iter - res.begin());
return std::move(res);
}