C++:
การใช้แอเรย์สมาชิก

วิธีการ:

ในภาษา C++ แอสโซซิเอทีฟอาร์เรย์สามารถใช้งานได้ด้วยการรวมเข้ากับ header <map> และ <unordered_map> ลองมาดูตัวอย่างการใช้งานทั้งสองอย่างนี้กัน

การใช้ std::map

std::map จะเก็บองค์ประกอบโดยจัดเรียงตามคีย์ นี่คือวิธีเริ่มต้นใช้งาน:

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, int> ageMap;
    
    // การแทรกค่า
    ageMap["Alice"] = 30;
    ageMap["Bob"] = 25;
    
    // การเข้าถึงค่า
    std::cout << "อายุของ Bob: " << ageMap["Bob"] << std::endl;
    
    // การวนซ้ำผ่าน map
    for(const auto &pair : ageMap) {
        std::cout << pair.first << " อายุ " << pair.second << " ปี" << std::endl;
    }
    
    return 0;
}

การใช้ std::unordered_map

เมื่อลำดับไม่สำคัญแต่ประสิทธิภาพการทำงานคือสิ่งที่คุณต้องการ std::unordered_map เป็นตัวเลือกที่เหมาะสม โดยมีความซับซ้อนเฉลี่ยของการทำงานที่เร็วกว่าสำหรับการแทรก การค้นหา และลบ

#include <iostream>
#include <unordered_map>
#include <string>

int main() {
    std::unordered_map<std::string, double> productPrice;
    
    // การแทรกค่า
    productPrice["milk"] = 2.99;
    productPrice["bread"] = 1.99;
    
    // การเข้าถึงค่า
    std::cout << "ราคานม: $" << productPrice["milk"] << std::endl;
    
    // การวนซ้ำผ่าน unordered_map
    for(const auto &pair : productPrice) {
        std::cout << pair.first << " ราคา $" << pair.second << std::endl;
    }
    
    return 0;
}

ลงลึก

แอสโซซิเอทีฟอาร์เรย์ในภาษา C++ โดยเฉพาะ std::map และ std::unordered_map ไม่ใช่เพียงแค่เกี่ยวกับการเก็บองค์ประกอบ แต่ยังให้ฐานสำหรับการจัดการข้อมูลที่ซับซ้อนยิ่งขึ้นโดยอนุญาตให้ดำเนินการเช่นการค้นหา การแทรก และการลบด้วยเวลาที่มีประสิทธิภาพ (เวลาโลการิธึมสำหรับ std::map และเวลาคงที่เฉลี่ยสำหรับ std::unordered_map) ประสิทธิภาพนี้มาจากโครงสร้างข้อมูลพื้นฐาน: ต้นไม้ที่สมดุลสำหรับ std::map และตารางแฮชสำหรับ std::unordered_map

ในอดีต ก่อนที่จะมีส่วนหนึ่งของไลบรารี่มาตรฐาน นักโปรแกรมเมอร์จะต้องทำการเขียนเวอร์ชันของตัวเองหรือใช้ไลบรารี่ของบุคคลที่สาม นำไปสู่ความไม่สม่ำเสมอและศักยภาพในการทำงานที่ไม่มีประสิทธิภาพ การรวม map ไว้ในไลบรารี่มาตรฐานของภาษา C++ ไม่เพียงแต่มาตรฐานการใช้งานเท่านั้น แต่ยังเพิ่มประสิทธิภาพให้กับมันในแพลตฟอร์มและคอมไพเลอร์ที่แตกต่างกัน

แม้ว่าทั้งสองจะมีประสิทธิภาพเยี่ยม แต่การเลือกระหว่าง std::map และ std::unordered_map ขึ้นอยู่กับรายละเอียดของกรณีการใช้งานของคุณ ต้องการข้อมูลที่มีการเรียงลำดับและไม่คิดเห็นปัญหาเรื่องประสิทธิภาพเล็กน้อย? ใช้ std::map หากคุณต้องการความเร็วและไม่สนใจเรื่องการเรียงลำดับ std::unordered_map อาจเหมาะสมกับคุณมากกว่า

อย่างไรก็ตาม สำคัญที่จะต้องทราบว่าเมื่อทำงานกับโครงสร้างข้อมูลที่ซับซ้อน จะมีการแลกเปลี่ยนเสมอ ในบางกรณีพิเศษ โครงสร้างข้อมูลอื่น ๆ หรือแม้แต่ไลบรารี่ของบุคคลที่สามอาจมีประสิทธิภาพหรือฟังก์ชั่นการใช้งานที่เหมาะสมกับความต้องการเฉพาะของคุณมากกว่า ควรพิจารณาตัวเลือกของคุณตามความต้องการของโปรเจกต์ที่คุณทำ