วิธีใช้ฟังก์ชัน Upper_bound() ใน C++

Withi Chi Fangkchan Upper Bound Ni C



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

ฟังก์ชั่น upper_bound() ใน C++ คืออะไร

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







มันมีอาร์กิวเมนต์ที่แตกต่างกันสองประเภท:



หมายเลขบน_ขอบเขต ( หนึ่ง อันดับแรก หนึ่ง ล่าสุด , ค่า )

ตัววนซ้ำที่ระบุช่วงขององค์ประกอบที่จะตรวจสอบคือตัวแรกและตัวสุดท้าย ช่วงเวลาที่ใช้ประกอบด้วยองค์ประกอบทั้งหมดตั้งแต่องค์ประกอบแรกจนถึงจุดสิ้นสุด แต่ไม่รวมองค์ประกอบที่ระบุโดยสุดท้าย Value คือค่าที่ใช้เปรียบเทียบองค์ประกอบต่างๆ



หมายเลขบน_ขอบเขต ( หนึ่ง อันดับแรก หนึ่ง ล่าสุด ,  ค่า, เปรียบเทียบคอมพ์ )

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





วิธีใช้ฟังก์ชัน upper_bound() ใน C++

สามารถใช้ฟังก์ชัน upper_bound() เพื่อค้นหาขอบเขตบนของค่าในช่วงที่เรียงลำดับขององค์ประกอบในสถานการณ์ต่างๆ ตัวอย่างเช่น เราสามารถใช้มันเพื่อค้นหาตำแหน่งขององค์ประกอบในอาร์เรย์หรือเวกเตอร์ที่เรียงลำดับแล้ว หรือเพื่อค้นหาองค์ประกอบที่ใหญ่กว่าถัดไปในชุดหรือแผนที่ นี่คือตัวอย่างบางส่วนของวิธีใช้ฟังก์ชัน upper_bound() ใน C++:

ตัวอย่างที่ 1: การใช้ฟังก์ชัน upper_bound() เพื่อค้นหาตำแหน่งขององค์ประกอบในอาร์เรย์ที่เรียงลำดับ

นี่คือตัวอย่างที่ใช้ฟังก์ชัน upper_bound() เพื่อค้นหาตำแหน่งขององค์ประกอบในอาร์เรย์ที่เรียงลำดับของจำนวนเต็มและแสดงบนหน้าจอ:



#รวม

#รวม

โดยใช้ เนมสเปซ มาตรฐาน ;

ภายใน หลัก ( )

{

ภายใน อาร์เรย์ [ ] = { สิบห้า , 35 , สี่ห้า , 55 , 65 } ;

ภายใน = ขนาดของ ( อาร์เรย์ ) / ขนาดของ ( อาร์เรย์ [ 0 ] ) ;

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

สำหรับ ( ภายใน ฉัน = 0 ; ฉัน < ; ฉัน ++ )

ศาล << อาร์เรย์ [ ฉัน ] << ' ' ;

ศาล << ' \n ' ;

ภายใน = สี่ห้า ; // ประกาศและกำหนดค่าเริ่มต้น

ภายใน * พี = บน_ขอบเขต ( อาร์เรย์, อาร์เรย์ + ก, ข ) ;

ศาล << 'ขอบเขตบนของ' << << ' อยู่ที่ตำแหน่ง: ' << ( พี - - อาร์เรย์ ) << ' \n ' ; // แสดงตำแหน่งโดยใช้เลขคณิตของพอยน์เตอร์

กลับ 0 ;

}

ขั้นแรกโปรแกรมจะกำหนดไฟล์ส่วนหัวที่จำเป็นและอาร์เรย์ที่มีตัวเลข จากนั้นใช้ฟังก์ชัน sizeof() เพื่อรับขนาดของอาร์เรย์ ถัดไป for loop ถูกใช้เพื่อแสดงองค์ประกอบของอาร์เรย์ จากนั้นจะมีการประกาศจำนวนเต็มซึ่งมีการกำหนดตำแหน่งในอาร์เรย์โดยใช้ตัวชี้ และจะแสดงในเอาต์พุต:

ตัวอย่างที่ 2: การใช้ฟังก์ชัน upper_bound() เพื่อค้นหาองค์ประกอบที่ยิ่งใหญ่ถัดไปในชุด

นี่คือโค้ดตัวอย่างที่ใช้ฟังก์ชัน upper_bound() เพื่อค้นหาองค์ประกอบที่ใหญ่กว่าค่าที่กำหนดในชุดจำนวนเต็มและแสดงบนหน้าจอ:

#รวม

#รวม

#รวม <เวกเตอร์>

โดยใช้ เนมสเปซ มาตรฐาน ;

ภายใน หลัก ( )

{

ชุด < ภายใน > หนึ่ง = { สิบห้า , 25 , 35 , สี่ห้า , 55 } ; // ประกาศและเริ่มต้นชุดของจำนวนเต็ม

ศาล << 'หมายเลขที่กำหนด:' ;

สำหรับ ( อัตโนมัติ : : หนึ่ง ) // แสดงองค์ประกอบที่กำหนดโดยใช้ for loop ตามช่วง

ศาล << << ' ' ;

ศาล << ' \n ' ;

ภายใน = สี่ห้า ; // ประกาศและกำหนดค่าเริ่มต้น

อัตโนมัติ มัน = บน_ขอบเขต ( หนึ่ง เริ่ม ( ) หนึ่ง จบ ( ) , ก ) ; // ค้นหาขอบเขตบนของ x ในชุดโดยใช้ upper_bound()

ถ้า ( มัน ! = หนึ่ง จบ ( ) ) // ตรวจสอบว่าตัววนซ้ำถูกต้องหรือไม่

ศาล << “จำนวนที่สูงกว่าถัดไป” << << ' เป็น ' << * มัน << ' \n ' ; // แสดงองค์ประกอบโดยใช้ตัวดำเนินการอ้างอิง

อื่น

ศาล << “ไม่มีจำนวนใดจะสูงกว่า” << << ' \n ' ; // แสดงข้อความหากไม่พบองค์ประกอบดังกล่าว

กลับ 0 ;

}

ขั้นแรกให้โค้ดกำหนดไฟล์ส่วนหัวที่จำเป็น จากนั้นจึงกำหนดเวกเตอร์ขององค์ประกอบทั้งห้า จากนั้นเวกเตอร์จะแสดงโดยใช้คีย์เวิร์ด auto เนื่องจากสามารถตั้งค่าประเภทข้อมูลขององค์ประกอบได้โดยอัตโนมัติ ถัดไปตัวแปรที่มีค่า 45 จะถูกประกาศ ซึ่งจะถูกเปรียบเทียบกับเวกเตอร์ที่กำหนดโดยใช้ฟังก์ชัน upper_bound() และหลังจากนั้นจะแสดงผลการเปรียบเทียบ:

บทสรุป

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