C ++ Unordered_Map :: ค้นหา () ฟังก์ชัน

C Unordered Map Khnha Fangkchan



C++ มีชื่อเสียงในด้านไลบรารีเทมเพลตมาตรฐาน (STL) ที่ทรงพลังและอเนกประสงค์ ช่วยให้นักพัฒนามีชุดคอนเทนเนอร์ ตัววนซ้ำ อัลกอริธึม และฟังก์ชันที่พร้อมใช้งานและมีประสิทธิภาพสูงแก่นักพัฒนา ในบรรดาสิ่งเหล่านี้ “unordered_map” โดดเด่นในฐานะผู้เล่นหลักในการจัดเก็บข้อมูลคีย์-ค่าที่มีประสิทธิภาพและการเข้าถึงความเร็วสูง ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับแอปพลิเคชันที่การดึงข้อมูลที่รวดเร็วเป็นสิ่งสำคัญยิ่ง หัวใจสำคัญของ “unordered_map” นี้ ฟังก์ชัน unordered_map::find() เป็นเครื่องมือสำคัญ โครงสร้างข้อมูลนี้ได้รับการปรับให้เหมาะสมสำหรับการเข้าถึงความเร็วสูงและการจัดเก็บข้อมูลคีย์-ค่า บทความนี้นำเสนอการตรวจสอบฟังก์ชัน unordered_map::find() อย่างครอบคลุมโดยการเปิดเผยไวยากรณ์และพารามิเตอร์พร้อมตัวอย่างประกอบ

ทำความเข้าใจกับ Unordered_Map::Find()

ฟังก์ชัน unordered_map::find() ได้รับการออกแบบมาเพื่อค้นหาองค์ประกอบที่เกี่ยวข้องกับคีย์ที่ระบุภายใน 'unordered_map' การประกาศจะแตกต่างกันไปขึ้นอยู่กับว่าออบเจ็กต์มีคุณสมบัติคงที่หรือไม่ ซึ่งให้ความยืดหยุ่นในการใช้งาน

ค้นหาตัววนซ้ำ - ค่าคงที่ คีย์_ประเภท - เค - -

ใช้เมื่อ 'unordered_map' ไม่ผ่านการรับรองคงที่ รหัสนี้ส่งคืนตัววนซ้ำที่ชี้ไปยังองค์ประกอบที่พบ







const_iterator ค้นหา - ค่าคงที่ คีย์_ประเภท - เค - ค่าคงที่ -

เวอร์ชันนี้ใช้ได้เมื่อ 'unordered_map' มีคุณสมบัติคงที่ มันจะส่งคืนตัววนซ้ำคงที่ซึ่งมีพฤติกรรมคล้ายกับเวอร์ชันที่ไม่คงที่



พารามิเตอร์:



ใช้พารามิเตอร์ตัวเดียว 'k' ซึ่งเป็นคีย์ที่จะค้นหาภายใน 'unordered_map'





มูลค่าส่งคืน:

ค่าที่ส่งคืนขึ้นอยู่กับคุณสมบัติของวัตถุ 'unordered_map'

วิธีการส่งกลับตัววนซ้ำที่ไม่คงที่หากวัตถุไม่ผ่านการรับรองอย่างต่อเนื่อง



หากวัตถุมีคุณสมบัติคงที่ วิธีการจะส่งกลับตัววนซ้ำคงที่

ความซับซ้อนของเวลา:

ความซับซ้อนของเวลา std::unordered_map::find() มีความสำคัญอย่างยิ่งต่อการทำความเข้าใจประสิทธิภาพของมัน:

ในกรณีโดยเฉลี่ย ความซับซ้อนของเวลาจะคงที่ (O(1)) ทำให้มีประสิทธิภาพสูงสำหรับกรณีการใช้งานทั่วไป

ในกรณีที่เลวร้ายที่สุด ความซับซ้อนของเวลาจะกลายเป็นเชิงเส้น (O(n)) อย่างไรก็ตาม สถานการณ์นี้เกิดขึ้นได้ยากในทางปฏิบัติ

ตัวอย่างที่ 1:

มาสำรวจตัวอย่างเชิงปฏิบัติเพื่ออธิบายการใช้งานและประโยชน์ของ unordered_map::find() ในตัวอย่างนี้ 'unordered_map' จะถูกสร้างขึ้นโดยมีอักขระเป็นคีย์และจำนวนเต็มที่สอดคล้องกันเป็นค่า ฟังก์ชั่น find() ค้นหาองค์ประกอบที่เชื่อมโยงกับคีย์ของ “p” ตัววนซ้ำ “ittr” เชื่อมโยงกับองค์ประกอบที่พบ และข้อมูลจะถูกพิมพ์ไปยังคอนโซล ดูรหัสต่อไปนี้:

#รวม

#รวม

ใช้เนมสเปซมาตรฐาน -

ภายใน หลัก - เป็นโมฆะ - -

แผนที่ไม่เรียงลำดับ - ถ่าน - ภายใน - ไม่ปกติ - -

- 'ใน' - 9 - -

- 'เป็น' - 6 - -

- 'พี' - 8 - -

- 'ฉัน' - 3 - -

- 's' - 4 - - -

อัตโนมัติ มัน - ไม่ปกติ หา - 'พี' - -

ศาล - 'ตัววนซ้ำ' ' << ittr->ครั้งแรก << ' ' ชี้ไปที่ = ' - มัน - ที่สอง - สิ้นสุด -

กลับ 0 - -

มาแจกแจงโค้ดเพื่อให้มีความเข้าใจที่ชัดเจนและดีขึ้น:

#รวม

#รวม

ไฟล์ส่วนหัวที่จำเป็นรวมอยู่ด้วย: สำหรับการดำเนินการอินพุต/เอาท์พุต และ สำหรับการใช้คอนเทนเนอร์ “unordered_map”

ใช้เนมสเปซมาตรฐาน -

เนมสเปซ 'std' ทำให้โค้ดง่ายขึ้น ช่วยให้คุณสามารถใช้องค์ประกอบจากไลบรารี C++ มาตรฐานโดยไม่ต้องขึ้นต้นด้วย 'std::'

แผนที่ไม่เรียงลำดับ - ถ่าน - ภายใน - ไม่ปกติ - - - 'ใน' - 9 - - - 'เป็น' - 6 - - - 'พี' - 8 - - - 'ฉัน' - 3 - - - 's' - 4 - - -

“unordered_map” ชื่อ “um” ถูกสร้างขึ้นโดยมีอักขระ ('w', 'a', 'p', 'm', 's') เป็นคีย์และจำนวนเต็มที่สอดคล้องกัน (9, 6, 8, 3, 4 ) เป็นค่า

อัตโนมัติ มัน - ไม่ปกติ หา - 'พี' - -

ฟังก์ชัน find() ใช้เพื่อค้นหาองค์ประกอบด้วยคีย์ 'p' ใน 'unordered_map' ซึ่งก็คือ 'unomp' ตัววนซ้ำ “ittr” ชี้ไปที่องค์ประกอบที่ระบุ

ศาล - 'ตัววนซ้ำ' ' << ittr->ครั้งแรก << ' ' ชี้ไปที่ = ' - มัน - ที่สอง - สิ้นสุด -

เนื้อหาที่ตัววนซ้ำชี้ไปจะถูกพิมพ์ไปยังคอนโซล จะพิมพ์คีย์ (“p”) และค่าที่เกี่ยวข้อง (8) ในกรณีนี้

กลับ 0 -

โปรแกรมสิ้นสุดการทำงาน โดยส่งคืน 0 เพื่อบ่งชี้ว่าการดำเนินการสำเร็จ

ผลลัพธ์ของโค้ดจะได้รับดังต่อไปนี้สำหรับการอ้างอิงของคุณ:

โค้ดนี้เป็นตัวอย่างง่ายๆ ของการใช้ unordered_map::find() เพื่อค้นหาและเข้าถึงองค์ประกอบภายใน “unordered_map” อย่างมีประสิทธิภาพ ตัววนซ้ำให้วิธีที่สะดวกในการเข้าถึงทั้งคีย์และค่าที่เกี่ยวข้องขององค์ประกอบที่พบ

ตัวอย่างที่ 2:

นี่เป็นอีกตัวอย่างง่ายๆ ของฟังก์ชัน unordered_map::find() รหัสนี้สาธิตการใช้งาน 'unordered_map' เพื่อจัดเก็บค่าบูลีนที่เกี่ยวข้องกับคีย์จำนวนเต็ม จากนั้นใช้ฟังก์ชัน find() เพื่อตรวจสอบการมีอยู่ของคีย์เฉพาะ ให้เราดูโค้ดต่อไปนี้แล้วทำความเข้าใจวิธีการทำงาน:

#รวม

ใช้เนมสเปซมาตรฐาน -

ภายใน หลัก - - -

แผนที่ไม่เรียงลำดับ - ภายใน - บูล - ไม่ปกติ -

ไม่ปกติ - 2 - - จริง -

ไม่ปกติ - 67 - - เท็จ -

ไม่ปกติ - สี่ห้า - - จริง -

ไม่ปกติ - 98 - - เท็จ -

ถ้า - ไม่ปกติ หา - 67 - - ไม่ปกติ จบ - - -

ศาล - 'ไม่พบองค์ประกอบ' - สิ้นสุด -

อื่น

ศาล - 'พบองค์ประกอบ' - สิ้นสุด -

ถ้า - ไม่ปกติ หา - 42 - - ไม่ปกติ จบ - - -

ศาล - 'ไม่พบองค์ประกอบ' - สิ้นสุด -

อื่น

ศาล - 'พบองค์ประกอบ' - สิ้นสุด -

กลับ 0 -

-

นี่คือคำอธิบายโดยละเอียดของโค้ด:

#รวม

บรรทัดนี้มีไฟล์ส่วนหัวที่ครอบคลุมไลบรารี C++ มาตรฐานส่วนใหญ่ที่มักใช้ในโปรแกรมการแข่งขัน อย่างไรก็ตาม ในการพัฒนา C++ เป็นประจำ ขอแนะนำให้รวมส่วนหัวที่เฉพาะเจาะจงด้วย

แผนที่ไม่เรียงลำดับ - ภายใน - บูล - ไม่ปกติ -

“unordered_map” ชื่อ “unomp” ถูกสร้างขึ้นด้วยคีย์จำนวนเต็มและค่าบูลีน

ไม่ปกติ - 2 - - จริง -

ไม่ปกติ - 67 - - เท็จ -

ไม่ปกติ - สี่ห้า - - จริง -

ไม่ปกติ - 98 - - เท็จ -

คู่คีย์-ค่าจะถูกแทรกลงใน 'unordered_map' แต่ละคีย์ (จำนวนเต็ม) เชื่อมโยงกับค่าบูลีน

ถ้า - ไม่ปกติ หา - 67 - - ไม่ปกติ จบ - - -

ศาล - 'ไม่พบองค์ประกอบ' - สิ้นสุด -

อื่น

ศาล - 'พบองค์ประกอบ' - สิ้นสุด -

ฟังก์ชัน find() ถูกใช้ภายใต้เงื่อนไข if-else เพื่อค้นหาคีย์เฉพาะ (67 และ 42) ภายใน 'unordered_map' หากพบคีย์ ระบบจะพิมพ์ 'Element found' มิฉะนั้น ข้อความ “ไม่พบองค์ประกอบ” จะถูกพิมพ์ออกมา ดูผลลัพธ์ต่อไปนี้:

โค้ดนี้แสดงการใช้งานพื้นฐานของ 'unordered_map' และฟังก์ชัน find() เพื่อพิจารณาว่ามีหรือไม่มีคีย์เฉพาะในแผนที่

ตัวอย่างที่ 3:

ให้เราสำรวจอีกตัวอย่างหนึ่งที่แสดงให้เห็นถึงการค้นหาค่าโดยการป้อนข้อมูล ณ รันไทม์ โปรแกรมอย่างง่ายนี้ใช้ 'unordered_map' เพื่อจัดเก็บชื่อ (เป็นคีย์) และค่าตัวเลขที่เกี่ยวข้อง (ในกรณีนี้คือการแสดงคุณลักษณะบางอย่าง) จากนั้นจะแจ้งให้ผู้ใช้ป้อนชื่อ ค้นหาชื่อนั้นในแผนที่โดยใช้ฟังก์ชัน find() และพิมพ์ค่าที่เกี่ยวข้องหากพบชื่อนั้น รหัสได้รับดังต่อไปนี้สำหรับการอ้างอิงของคุณ:

#รวม

#รวม

#รวม

ใช้เนมสเปซมาตรฐาน -

ภายใน หลัก - - -

มาตรฐาน - แผนที่ไม่เรียงลำดับ - มาตรฐาน - เชือก - สองเท่า - ไม่ปกติ - -

- “เฮรี่” - 23 - -

- 'คนอื่น' - 7.4 - -

- “คัลซูม” - 1.2 - - -

สตริงใคร -

ศาล - 'คุณกำลังมองหาใคร?' -

รับสาย - การกิน - WHO - -

แผนที่ไม่เรียงลำดับ - เชือก - สองเท่า - const_iterator ค้นหา - ไม่ปกติ หา - WHO - -

ถ้า - ค้นหา - ไม่ปกติ จบ - - -

ศาล - 'ไม่พบ' -

อื่น

ศาล - สิ้นสุด - ค้นหา - อันดับแรก - ' เป็น ' - ค้นหา - ที่สอง - สิ้นสุด -

กลับ 0 -

-

ต่อไปนี้คือรายละเอียดของโค้ดเพื่อความเข้าใจของคุณ:

แผนที่ไม่เรียงลำดับ - เชือก - สองเท่า - ไม่ปกติ - - - -

“unordered_map” ชื่อ “unomp” ถูกสร้างขึ้นด้วยคีย์สตริง (ชื่อ) และค่าคู่

สตริงใคร -

ผู้ใช้จะได้รับแจ้งให้ป้อนชื่อบนหน้าจอ และอินพุตจะถูกจัดเก็บไว้ในตัวแปรสตริง 'who'

แผนที่ไม่เรียงลำดับ - เชือก - สองเท่า - const_iterator ค้นหา - ไม่ปกติ หา - WHO - -

ฟังก์ชัน find() ใช้เพื่อค้นหาชื่อที่ป้อนใน “unordered_map” ผลลัพธ์จะถูกจัดเก็บไว้ในตัววนซ้ำ “fnd”

ถ้า - ค้นหา - ไม่ปกติ จบ - - -

ศาล - 'ไม่พบ' -

อื่น

ศาล - สิ้นสุด - ค้นหา - อันดับแรก - ' เป็น ' - ค้นหา - ที่สอง - สิ้นสุด -

หากตัววนซ้ำ “fnd” ไปถึงจุดสิ้นสุดของ “unordered_map” (end()) แสดงว่าไม่พบชื่อและ “ไม่พบ” ถูกพิมพ์ออกมา มิฉะนั้น ชื่อและค่าที่เกี่ยวข้องจะถูกพิมพ์ นี่คือผลลัพธ์ของโค้ด:

โค้ดนี้ทำหน้าที่เป็นเครื่องมือค้นหาชื่ออย่างง่ายโดยใช้ 'unordered_map' โดยจะใช้อินพุตของผู้ใช้ ค้นหาชื่อในแผนที่ และระบุค่าที่เกี่ยวข้องหากพบชื่อนั้น

บทสรุป

ฟังก์ชัน unordered_map::find() ใน C++ มอบกลไกอันทรงพลังในการค้นหาองค์ประกอบภายในคอนเทนเนอร์ “unordered_map” ได้อย่างมีประสิทธิภาพ ความซับซ้อนของเวลาเฉลี่ยคงที่ทำให้เป็นตัวเลือกที่ต้องการสำหรับการดำเนินการค้นหาในสถานการณ์ที่ต้องเข้าถึงคู่คีย์-ค่าอย่างรวดเร็ว ตัวอย่างที่ให้มาแสดงให้เห็นถึงการใช้งานจริง โดยเน้นความเรียบง่ายและมีประสิทธิภาพ โดยสรุป การเรียนรู้ฟังก์ชัน unordered_map::find() จะช่วยเพิ่มความสามารถของโปรแกรมเมอร์ C++ ในการควบคุมศักยภาพของคอนเทนเนอร์ 'unordered_map' ได้อย่างเต็มที่ ซึ่งมีส่วนช่วยในการสร้างแอปพลิเคชันที่ปรับให้เหมาะสมและมีประสิทธิภาพสูง