Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C++ Set สำหรับข้อมูลประเภทผู้ใช้กำหนดเอง

นี่คือวิธีสร้าง set สำหรับข้อมูลประเภทผู้ใช้กำหนดเอง (user-defined data types) Set อยู่ใน C++ STL เป็นโครงสร้างข้อมูลพิเศษ จัดเก็บข้อมูลเรียงลำดับ และไม่รองรับค่าซ้ำ สามารถใช้ set สำหรับข้อมูลประเภทใดก็ได้ แต่จะดูวิธีใช้กับข้อมูลผู้ใช้กำหนดเอง

เพื่อใช้ข้อมูลผู้ใช้กำหนดเองใน set ต้อง override operator < ที่เปรียบเทียบค่าสองค่าของประเภทนั้น ถ้าไม่มี จะไม่สามารถเปรียบเทียบออบเจกต์ได้ set จึงจัดเก็บเรียงลำดับไม่ได้ และจะโยน exception

ตัวอย่าง

#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 {
    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 จะไม่พิจารณา 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();
  }
}

ผลลัพธ์

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