วิธีการ lower_bound() คืออะไร?
เมธอด lower_bound() ใน C++ ค้นหาการเกิดขึ้นครั้งแรกของค่าที่กำหนดในคอนเทนเนอร์ที่เรียงลำดับ เป็นส่วนหนึ่งของไลบรารี
ไวยากรณ์
เมธอด 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
ฟังก์ชัน std::lower_bound() ถูกเรียกใช้ด้วยค่าที่แตกต่างกันสามค่า: 13, 23 และ 33 ในการเรียกแต่ละครั้ง lower_bound() จะให้ตัววนซ้ำที่ชี้ไปยังองค์ประกอบแรกในเวกเตอร์ที่มากกว่าหรือเท่ากับ ค่าที่ระบุ
จากนั้นโค้ดจะพิมพ์ตำแหน่งขององค์ประกอบเหล่านี้ในเวกเตอร์โดยการลบค่าต่างๆ .begin() iterator ออกจาก iterator ที่ส่งคืนโดย std::lower_bound() ซึ่งจะให้ดัชนีขององค์ประกอบในเวกเตอร์
เอาต์พุต
บทสรุป
เมธอด lower_bound() ใน C++ ค้นหาการเกิดขึ้นครั้งแรกของค่าที่กำหนดในคอนเทนเนอร์ที่เรียงลำดับ เป็นส่วนหนึ่งของไลบรารี