วิธีการ lower_Bound() ใน C++ คืออะไร

Withi Kar Lower Bound Ni C Khux Xari



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

วิธีการ lower_bound() คืออะไร?

เมธอด lower_bound() ใน C++ ค้นหาการเกิดขึ้นครั้งแรกของค่าที่กำหนดในคอนเทนเนอร์ที่เรียงลำดับ เป็นส่วนหนึ่งของไลบรารี ใน C++ และใช้เพื่อค้นหาแบบไบนารีบนอาร์เรย์ เวกเตอร์ และคอนเทนเนอร์ที่เรียงลำดับอื่นๆ เมธอด lower_bound() จะส่งคืนตัววนซ้ำที่ชี้ไปยังองค์ประกอบแรกในช่วงที่ระบุของคอนเทนเนอร์ ซึ่งมีค่าไม่น้อยกว่าค่าที่ระบุ

ไวยากรณ์







เมธอด lower_bound() ใน C++ มีสองรูปแบบ: ค่าเริ่มต้นและไวยากรณ์ที่กำหนดเอง



ไวยากรณ์เริ่มต้น

ไวยากรณ์เริ่มต้นใช้ใน ForwardIterator ที่ชี้ไปยังองค์ประกอบแรกและที่ผ่านมาในช่วงที่จะค้นหาตามลำดับ และค่าเพื่อเปรียบเทียบองค์ประกอบในช่วง



ForwardIterator lower_bound ( ForwardIterator ก่อน , ForwardIterator สุดท้าย , คอสต์ & วาล ) ;

ไวยากรณ์ที่กำหนดเอง

ไวยากรณ์ที่กำหนดเองยังใช้ในฟังก์ชันเพรดิเคตไบนารีที่ผู้ใช้กำหนด ซึ่งเป็นไปตามลำดับที่อ่อนแออย่างเข้มงวดเพื่อสั่งซื้อองค์ประกอบ





ForwardIterator lower_bound ( ForwardIterator ก่อน , ForwardIterator สุดท้าย , คอสต์ & วาล , เปรียบเทียบคอมพ์ ) ;

พารามิเตอร์

เมธอด lower_bound() ใน C++ ใช้พารามิเตอร์สามตัว

ที่ผ่านมาเป็นครั้งแรก: พารามิเตอร์สองตัวแรก 'ตัวแรก' และ 'ตัวสุดท้าย' กำหนดช่วง [ตัวแรก ตัวสุดท้าย) ซึ่งเมธอดจะค้นหาขอบเขตล่าง ช่วงถูกระบุโดยพารามิเตอร์สองตัว ได้แก่ 'ตัวแรก' และ 'ตัวสุดท้าย' ช่วงประกอบด้วยองค์ประกอบทั้งหมดระหว่างตัววนซ้ำ 'ตัวแรก' และ 'ตัวสุดท้าย' แต่ไม่รวมองค์ประกอบที่ตัววนซ้ำ 'ตัวสุดท้าย' ชี้ไป



วาล: พารามิเตอร์ที่สามของเมธอด lower_bound() เรียกว่า “val” แสดงถึงค่าของขอบเขตล่างที่ต้องพบภายในช่วงที่กำหนด เมื่อเรียกใช้เมธอด lower_bound() จะค้นหาองค์ประกอบแรกภายในช่วงที่ระบุของคอนเทนเนอร์ที่มากกว่าหรือเท่ากับค่า 'val' ที่กำหนด

คอมพ์: เมธอด lower_bound() ยังสามารถยอมรับฟังก์ชันการเปรียบเทียบแบบไบนารีเป็นพารามิเตอร์ตัวที่สี่ ต้องใช้สองอาร์กิวเมนต์: ประเภทที่ชี้โดย ForwardIterator และอย่างที่สองคือ วาล . ฟังก์ชันจะส่งกลับค่าบูลีนตามการเปรียบเทียบระหว่างสองอาร์กิวเมนต์ อาร์กิวเมนต์ comp จะไม่เปลี่ยนอาร์กิวเมนต์ใดๆ และสามารถเป็นตัวชี้ฟังก์ชันหรือวัตถุฟังก์ชันเท่านั้น

ค่าส่งคืน

lower_bound() ส่งคืนตัววนซ้ำที่ชี้ไปยังองค์ประกอบแรกที่มากกว่าหรือเท่ากับ วาล . หากองค์ประกอบทั้งหมดในช่วงที่ระบุของคอนเทนเนอร์มีขนาดเล็กกว่าค่าที่กำหนด วาล เมธอด lower_bound() จะส่งคืนตัววนซ้ำที่ชี้ไปยังองค์ประกอบสุดท้ายในช่วง และหากองค์ประกอบทั้งหมดมีค่ามากกว่า วาล มันให้ตัววนซ้ำที่ชี้ไปที่องค์ประกอบแรกในช่วง

ตัวอย่างโค้ด

โค้ด C++ นี้สาธิตการใช้ฟังก์ชัน std::lower_bound() เพื่อค้นหาองค์ประกอบแรกในเวกเตอร์ที่จัดเรียงซึ่งมีค่าไม่น้อยกว่าค่าที่กำหนด

#รวม

นานาชาติ หลัก ( )

{

// ป้อนเวกเตอร์

มาตรฐาน :: เวกเตอร์ < สองเท่า > ค่า { 10 , สิบห้า , ยี่สิบ , 25 , 30 } ;

// พิมพ์เวกเตอร์

มาตรฐาน :: ศาล << 'เวกเตอร์ประกอบด้วย:' ;

สำหรับ ( ไม่ได้ลงนาม นานาชาติ ฉัน = 0 ; ฉัน < ค่า ขนาด ( ) ; ฉัน ++ )

มาตรฐาน :: ศาล << ' ' << ค่า [ ฉัน ] ;

มาตรฐาน :: ศาล << ' \n ' ;

มาตรฐาน :: เวกเตอร์ < สองเท่า >:: วนซ้ำ มัน1 , it2 , มัน3 ;

// std :: lower_bound

มัน1 = มาตรฐาน :: ล่าง_bound ( ค่า เริ่ม ( ) , ค่า จบ ( ) , 13 ) ;

it2 = มาตรฐาน :: ล่าง_bound ( ค่า เริ่ม ( ) , ค่า จบ ( ) , 23 ) ;

มัน3 = มาตรฐาน :: ล่าง_bound ( ค่า เริ่ม ( ) , ค่า จบ ( ) , 33 ) ;

มาตรฐาน :: ศาล

<< ' \n lower_bound สำหรับองค์ประกอบ 13 ที่ตำแหน่ง: '

<< ( มัน1 - ค่า เริ่ม ( ) ) ;

มาตรฐาน :: ศาล

<< ' \n lower_bound สำหรับองค์ประกอบ 23 ที่ตำแหน่ง: '

<< ( it2 - ค่า เริ่ม ( ) ) ;

มาตรฐาน :: ศาล

<< ' \n lower_bound สำหรับองค์ประกอบ 33 ที่ตำแหน่ง: '

<< ( มัน3 - ค่า เริ่ม ( ) ) ;

กลับ 0 ;

}

รหัสเริ่มต้นด้วยการกำหนด std::vector ของค่าชื่อสองประเภทและเริ่มต้นด้วยค่าบางค่า จากนั้นพิมพ์องค์ประกอบของเวกเตอร์โดยใช้ for วนซ้ำ

ถัดไป โค้ดจะประกาศตัวแปร std::vector::iterator สามตัวชื่อ it1, it2 และ it3 ตัวแปรเหล่านี้จะใช้เพื่อเก็บผลลัพธ์ของการเรียก std::lower_bound() บนเวกเตอร์ค่าที่มีอาร์กิวเมนต์ต่างกัน

ฟังก์ชัน std::lower_bound() ถูกเรียกใช้ด้วยค่าที่แตกต่างกันสามค่า: 13, 23 และ 33 ในการเรียกแต่ละครั้ง lower_bound() จะให้ตัววนซ้ำที่ชี้ไปยังองค์ประกอบแรกในเวกเตอร์ที่มากกว่าหรือเท่ากับ ค่าที่ระบุ

จากนั้นโค้ดจะพิมพ์ตำแหน่งขององค์ประกอบเหล่านี้ในเวกเตอร์โดยการลบค่าต่างๆ .begin() iterator ออกจาก iterator ที่ส่งคืนโดย std::lower_bound() ซึ่งจะให้ดัชนีขององค์ประกอบในเวกเตอร์

เอาต์พุต

บทสรุป

เมธอด lower_bound() ใน C++ ค้นหาการเกิดขึ้นครั้งแรกของค่าที่กำหนดในคอนเทนเนอร์ที่เรียงลำดับ เป็นส่วนหนึ่งของไลบรารี ใน C++ และสามารถใช้ค้นหาแบบไบนารีบนอาร์เรย์ เวกเตอร์ และคอนเทนเนอร์เรียงอื่นๆ วิธีการให้ตัววนซ้ำที่ชี้ไปยังองค์ประกอบแรกในช่วงที่ไม่น้อยกว่าค่าที่กำหนด อ่านเพิ่มเติมเกี่ยวกับเมธอด lower_bound() ในบทความนี้