การใช้งาน `set` ในภาษา C++ เป็นเรื่องง่ายและสนุกที่สุดเมื่อคุณเข้าใจถึงหลักการทำงานของมัน หลายคนอาจนึกถึง `set` เป็นการเก็บข้อมูลแบบไม่มีลำดับ (unordered) และไม่มีตัวซ้ำกัน (unique elements) ซึ่งเป็นคุณสมบัติพื้นฐานที่ทำให้ `set` มีประโยชน์มากในการแก้ปัญหาหลายอย่างในโลกจริง
ในภาษา C++, `set` เป็นส่วนหนึ่งของไลบรารีมาตรฐาน (Standard Template Library - STL) ซึ่งมีการจัดเรียงข้อมูลโดยอัตโนมัติตามลำดับจากน้อยไปมาก โดยใช้การเปรียบเทียบแบบ less-than เพื่อรักษาข้อมูลให้มีการเรียงลำดับไว้ภายใน `set` ในที่นี้เราจะมาดูตัวอย่างการใช้งาน `set` แบบง่ายๆ พร้อมอธิบายการทำงานของมันและยกตัวอย่าง usecase ในโลกจริง
ผลลัพธ์:
การทำงานของโค้ด: โค้ดนี้สร้าง `set` ซึ่งเป็น container ที่เก็บข้อมูลประเภท integer เราใส่ค่าเข้าไปใน `set` ผ่าน method `insert` และเมื่อเราพิมพ์ข้อมูลออกมา ค่าก็จะถูกเรียงจากน้อยไปหามากอัตโนมัติ
ผลลัพธ์:
การทำงานของโค้ด: ในโค้ดนี้เราทำการ `find` ค่าในเซ็ต หากพบว่าค่านั้นอยู่ในเซ็ต รีเทิร์น iterator ที่ระบุถึงข้อมูลนั้น แต่หากไม่พบ ก็จะรีเทิร์น `end` ซึ่งเป็น iterator แทนสิ้นสุดของ set
ผลลัพธ์:
การทำงานของโค้ด: เราสามารถลบข้อมูลใน `set` ได้โดยใช้ method `erase` และข้อมูลที่เหลือจะถูกแสดงออกมาที่หน้าจอ ยังคงเรียงลำดับอยู่
`set` สามารถใช้ในการจัดการข้อมูลที่ต้องการประเภทเอกลักษณ์เฉพาะตัว ไม่ซ้ำกัน ตัวอย่างเช่น:
- ในการสร้างระบบจัดการลูกค้า (Customer Relationship Management - CRM) เราอาจต้องการที่จะเก็บรายชื่อลูกค้าโดยที่แต่ละชื่อจะต้องไม่ซ้ำกัน
- ในการพัฒนาเกม เซ็ตสามารถใช้ในการเก็บข้อมูลของออนไลน์ที่ผู้เล่นเก็บได้โดยไม่มีการซ้ำกัน
หวังว่าตัวอย่างข้างต้นจะช่วยให้คุณเห็นความสำคัญของ `set` และกระตุ้นให้คุณอยากศึกษาการเขียนโปรแกรมใน EPT ที่ไม่เพียงให้ความรู้เทคนิคเท่านั้น แต่ยังช่วยให้คุณปรับปรุงทักษะการวิเคราะห์และการใช้โค้ดในการแก้ปัญหาที่คุณเผชิญในโลกจริงได้อีกด้วย!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: c++ set stl container insert find erase programming data_structure
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM