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

C++ Map ที่ใช้ Key เป็น User-defined Data Type

Map เป็นโครงสร้างข้อมูลที่จัดเก็บข้อมูลในรูปแบบคีย์-ค่า (key-value pairs) ใน C++ map ถูกกำหนดใน STL (Standard Template Library) และจัดเก็บคีย์ในรูปแบบที่เรียงลำดับแล้ว

Syntax การกำหนด map:

map<key_type, value_type> map_name;

ชนิดข้อมูลของคีย์หรือค่าใน map สามารถเป็นชนิดข้อมูล أيได้ ไม่ว่าจะเป็น primitive data types หรือ derived data types

เราสามารถใช้ชนิดข้อมูลใดๆ เป็นชนิดข้อมูลของคีย์ใน map แม้แต่ user-defined data type ก็สามารถใช้เป็นชนิดข้อมูลของคีย์ได้

ตอนนี้เราจะสร้างโครงสร้างข้อมูลที่กำหนดชนิดข้อมูลใหม่ และนำมาใช้เป็นคีย์สำหรับ map

Syntax

struct key {
    float f;
}

การใช้ user-defined data type นี้ใน map ที่สร้างขึ้น ทำให้โปรแกรมเมอร์ได้ชุดข้อมูลที่ให้ข้อมูลมากขึ้นจาก map โครงสร้าง (struct) สามารถมีข้อมูลได้หลายตัว แม้แต่อาร์เรย์และโครงสร้างข้อมูลอื่นๆ ก็ถือว่าใช้ได้ในกรณีนี้

ตัวอย่าง

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

struct kdata {
    float id;
};

bool operator<(const kdata& t1, const kdata& t2) {
    return (t1.id < t2.id);
}

int main() {
    kdata t1 = {4.5}, t2 = {12.3}, t3 = {67.8}, t4 = {65.2};
    map<kdata, char> maps;
    maps[t1] = 'a';
    maps[t2] = 'h';
    maps[t3] = 'm';
    maps[t4] = 'q';
    cout << "The map data is ";
    for (auto x : maps)
        cout << x.first.id << " > " << x.second << endl;
    return 0;
}

ผลลัพธ์

The map data is
4.5 > a
12.3 > h
67.8 > m
65.2 > q