Computer >> Máy Tính >  >> Lập trình >> C ++

C ++ được đặt cho kiểu dữ liệu do người dùng xác định

Ở đây chúng ta sẽ xem cách chúng ta có thể tạo một tập hợp cho các kiểu dữ liệu do người dùng xác định. Bộ hiện diện trong C ++ STL. Đây là một kiểu cấu trúc dữ liệu đặc biệt, nó có thể lưu trữ dữ liệu theo thứ tự đã được sắp xếp và không hỗ trợ nhập trùng lặp. Chúng ta có thể sử dụng set cho bất kỳ loại dữ liệu nào, nhưng ở đây chúng ta sẽ xem cách chúng ta cũng có thể sử dụng set cho các kiểu dữ liệu do người dùng xác định.

Để sử dụng các kiểu dữ liệu do người dùng xác định vào ngăn xếp, chúng ta phải ghi đè toán tử <, có thể so sánh hai giá trị của kiểu đó. Nếu điều này không xuất hiện, nó không thể so sánh hai đối tượng, do đó, tập hợp không thể lưu trữ dữ liệu theo thứ tự đã sắp xếp, do đó sẽ tạo ra một 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{ //sort using 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);
   //the set will not consider duplicate id
   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();
   }
}

Đầu ra

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