Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ triển khai Set_Difference trong STL

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

  1. Sắp xếp hai dãy đầu vào.
  2. Cấp phát vector kết quả.
  3. Gọi set_difference(set1, set1+n, set2, set2+m, v.begin()).
  4. 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