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

C++ set cho kiểu dữ liệu do người dùng định nghĩa


Ở đây chúng ta sẽ thấy cách tạo set cho kiểu dữ liệu do người dùng định nghĩa. Set nằm trong STL của C++. Đây là cấu trúc dữ liệu đặc biệt, lưu dữ liệu theo thứ tự đã sắp xếp và không cho phép trùng lặp. Có thể dùng set cho mọi kiểu dữ liệu, nhưng đây là cách dùng cho kiểu do người dùng định nghĩa.

Để dùng kiểu do người dùng định nghĩa trong set, phải nạp chồng toán tử < để so sánh hai giá trị kiểu đó. Nếu không có, set không thể so sánh hai đối tượng, không lưu theo thứ tự sắp xếp, sẽ ném ngoại lệ.

Ví dụ

#include <iostream>
#include <set>
using namespace std;

class Student {
    int id, marks;
public:
    Student(int id, int marks) {
        this->id = id;
        this->marks = marks;
    }
    bool operator <(const Student& st) const { // sắp xếp theo id
        return (this->id < st.id);
    }
    void display() const {
        cout << "(" << id << ", " << marks << ")\n";
    }
};

main() {
    Student s1(5, 70), s2(3, 86), s3(2, 91), s4(2, 60), s5(1, 78), s6(6, 53), s7(4, 59);
    // set không nhận id trùng lặp
    set<Student> st_set;
    st_set.insert(s1);
    st_set.insert(s2);
    st_set.insert(s3);
    st_set.insert(s4);
    st_set.insert(s5);
    st_set.insert(s6);
    st_set.insert(s7);
    set<Student>::iterator it;
    for (it = st_set.begin(); it != st_set.end(); it++) {
        it->display();
    }
}

Kết quả

(1, 78)
(2, 91)
(3, 86)
(4, 59)
(5, 70)
(6, 53)