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

C++ set cho kiểu dữ liệu tự định nghĩa


std::set – Container lưu trữ phần tử duy nhất và tự động sắp xếp tăng dần.

Để dùng với kiểu tự định nghĩa (struct/class), cần nạp chồng toán tử < (hoặc cung cấp comparator).

Ví dụ

#include <bits/stdc++.h>
using namespace std;

struct Test {
    int id;
    // Nạp chồng toán tử < cho set sắp xếp theo id
    bool operator<(const Test& other) const {
        return id < other.id;
    }
};

int main() {
    set<Test> s;
    s.insert({12}); s.insert({45}); s.insert({32});
    s.insert({78}); s.insert({12}); // trùng lặp → bỏ qua
    s.insert({8});
    
    cout << "Cac phan tu trong set (da sap xep, unique): ";
    for (auto &t : s) cout << t.id << " ";
    // Kết quả: 8 12 32 45 78
    return 0;
}

Các lưu ý quan trọng

  • Toán tử < phải định nghĩa thứ tự nghiêm ngặt (strict weak ordering).
  • Có thể dùng comparator ngoài: set<Test, function<bool(Test,Test)>> s(cmp);
  • Set không cho phép trùng lặp – dùng multiset nếu cần.
  • Phức độ: insert/find/erase = O(log n).

Kết quả

Cac phan tu trong set (da sap xep, unique): 8 12 32 45 78