ทำความเข้าใจกับ 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 - -
มาแจกแจงโค้ดเพื่อให้มีความเข้าใจที่ชัดเจนและดีขึ้น:
#รวม#รวม
ไฟล์ส่วนหัวที่จำเป็นรวมอยู่ด้วย:
เนมสเปซ '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' ได้อย่างเต็มที่ ซึ่งมีส่วนช่วยในการสร้างแอปพลิเคชันที่ปรับให้เหมาะสมและมีประสิทธิภาพสูง