Hiệu (Difference) của hai tập hợp A - B là tập các phần tử chỉ có trong A mà không có trong B. STL cung cấp std::set_difference.
Thuật toán
- Sắp xếp hai dãy đầu vào.
- Cấp phát vector kết quả.
- Gọi
set_difference(set1, set1+n, set2, set2+m, v.begin()). - Resize vector.
Ví dụ mã
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int set1[] = {5, 6, 7, 8, 9, 10};
int set2[] = {1, 2, 3, 4, 6, 7};
vector<int> v(12);
vector<int>::iterator it;
sort(set1, set1 + 6);
sort(set2, set2 + 6);
it = set_difference(set1, set1 + 6, set2, set2 + 6, v.begin());
v.resize(it - v.begin());
cout << "Hiệu set1 - set2 có " << v.size() << " phần tử: ";
for (it = v.begin(); it != v.end(); ++it)
cout << *it << " ";
cout << endl;
return 0;
}
Kết quả
Hiệu set1 - set2 có 4 phần tử: 5 8 9 10