c++ std::set_difference
时间: 2023-12-06 07:36:04 浏览: 135
`std::set_difference`是C++标准库中的一个算法函数,用于计算两个有序集合的差集。它将第一个集合中存在而第二个集合中不存在的元素复制到一个新的集合中。
以下是两个使用`std::set_difference`函数的C++示例:
示例1:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
int iarr1[] = {1, 2, 3, 3, 6, 7, 4, 5};
int iarr2[] = {1, 4, 3, 10, 9};
std::sort(std::begin(iarr1), std::end(iarr1));
std::sort(std::begin(iarr2), std::end(iarr2));
std::vector<int> ivec(10);
auto iter = std::set_difference(std::begin(iarr1), std::end(iarr1), std::begin(iarr2), std::end(iarr2), std::begin(ivec));
ivec.resize(iter - std::begin(ivec));
for (int num : ivec) {
std::cout << num << " ";
}
return 0;
}
```
示例2:
```cpp
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
int main() {
int iarr1[] = {1, 2, 3, 3, 4, 5, 6, 7};
int iarr2[] = {1, 4, 3, 9, 10};
std::multiset<int> iset1(std::begin(iarr1), std::end(iarr1));
std::multiset<int> iset2(std::begin(iarr2), std::end(iarr2));
std::vector<int> ivec(10);
auto iter = std::set_difference(iset1.begin(), iset1.end(), iset2.begin(), iset2.end(), ivec.begin());
ivec.resize(iter - ivec.begin());
for (int num : ivec) {
std::cout << num << " ";
}
return 0;
}
```
这两个示例分别使用了数组和`multiset`作为输入集合,并使用`std::set_difference`函数计算差集。最后,将差集输出到一个新的`vector`中,并打印出来。
阅读全文
相关推荐


















