C ++ เวกเตอร์ของคู่

C Wek Texr Khxng Khu



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

โครงสร้างข้อมูลนี้มีประโยชน์อย่างยิ่งในสถานการณ์ที่ต้องจัดเก็บองค์ประกอบเป็นคู่ เช่น เมื่อต้องจัดการกับคู่คีย์-ค่า หรือแสดงความสัมพันธ์ระหว่างเอนทิตี ในบทความนี้ เราจะสำรวจแนวคิดของคู่เวกเตอร์ C++ และสำรวจตัวอย่างต่างๆ เพื่อแสดงตัวอย่างการใช้งานจริง







ตัวอย่างที่ 1: การใช้งานพื้นฐาน: การวนซ้ำเวกเตอร์ของคู่

ลองพิจารณาตัวอย่างพื้นฐานที่เราสร้างเวกเตอร์ของคู่ที่แสดงถึงชื่อนักเรียนและอายุที่สอดคล้องกัน การวนซ้ำเวกเตอร์คู่จะคล้ายกับการวนซ้ำเวกเตอร์ปกติ เราสามารถใช้ตัววนซ้ำหรือลูป 'for' ตามช่วงเพื่อดึงข้อมูลแต่ละคู่ภายในเวกเตอร์



ตัวอย่างนี้แสดงไวยากรณ์ของ 'เวกเตอร์ของคู่' ในบริบทที่มีความหมาย



#รวม
#รวม <เวกเตอร์>
#รวม <ยูทิลิตี้>

int หลัก ( ) {

มาตรฐาน::เวกเตอร์ < มาตรฐาน::คู่ < std::string, int >> ข้อมูลนักเรียน;

StudentData.push_back ( มาตรฐาน::make_pair ( “อดัม” , ยี่สิบ ) ) ;
StudentData.push_back ( มาตรฐาน::make_pair ( 'ใบแจ้งหนี้' , 22 ) ) ;
StudentData.push_back ( มาตรฐาน::make_pair ( 'ชาร์ลี' , ยี่สิบเอ็ด ) ) ;

มาตรฐาน::cout << “ข้อมูลนักศึกษา: \n ' ;
สำหรับ ( เชื่อมต่ออัตโนมัติ & นักเรียน : StudentData ) {
มาตรฐาน::cout << 'ชื่อ: ' << นักเรียน.ก่อน << ', อายุ: ' << นักเรียน.วินาที << มาตรฐาน::endl;
}

กลับ 0 ;
}


ในตัวอย่างโค้ด C++ นี้ เราเริ่มต้นด้วยการรวมไฟล์ส่วนหัวที่สำคัญสามไฟล์: “ ” สำหรับการดำเนินการอินพุตและเอาต์พุต “” เพื่อใช้คอนเทนเนอร์เวกเตอร์ และ “” เพื่อเข้าถึง “std:: คู่” แม่แบบ ส่วนหัวเหล่านี้ช่วยให้เราสามารถใช้ฟังก์ชันการทำงานที่จำเป็นต่อโปรแกรมของเราได้





ก้าวไปข้างหน้า ภายในฟังก์ชัน main() เราจะประกาศเวกเตอร์ชื่อ “studentData” โดยใช้คอนเทนเนอร์ “std::vector” เวกเตอร์นี้ได้รับการออกแบบมาเพื่อจัดเก็บคู่โดยที่แต่ละคู่ห่อหุ้มชื่อของนักเรียน (แสดงเป็น “std::string”) และอายุ (จำนวนเต็ม “int”) จากนั้น เราเติมเวกเตอร์ “studentData” ด้วยสามคู่ เมื่อใช้ฟังก์ชัน 'push_back' คู่ต่างๆ จะถูกเพิ่มที่ส่วนท้ายของเวกเตอร์ เพื่อปรับขนาดแบบไดนามิก จากนั้นวนซ้ำผ่าน 'ข้อมูลนักเรียน' โดยแยกและพิมพ์ชื่อและอายุของนักเรียนแต่ละคน ผลลัพธ์จะแสดง “ข้อมูลนักเรียน:” ซึ่งเน้นการนำเสนอแบบมีโครงสร้าง พิมพ์ชื่อและอายุนักเรียนแยกกัน นำเสนอข้อมูลที่จัดเก็บไว้อย่างชัดเจน



ตัวอย่างที่ 2: การเรียงลำดับเวกเตอร์ของคู่

การเรียงลำดับเวกเตอร์ของคู่เป็นการดำเนินการทั่วไป โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับการเชื่อมโยงคีย์-ค่า ฟังก์ชัน “std::sort” จากส่วนหัว “ ” สามารถใช้เพื่อจุดประสงค์นี้ได้ มาดูวิธีการจัดเรียงเวกเตอร์ของคู่ตามองค์ประกอบที่หนึ่งและที่สอง:

#รวม
#รวม <เวกเตอร์>
#รวม <อัลกอริทึม>

int หลัก ( ) {

มาตรฐาน::เวกเตอร์ < มาตรฐาน::คู่ < std::string, int >> ข้อมูล;

ข้อมูล push_back ( มาตรฐาน::make_pair ( 'ปีเตอร์' , สิบห้า ) ) ;
ข้อมูล push_back ( มาตรฐาน::make_pair ( 'โดร่า' , 29 ) ) ;
ข้อมูล push_back ( มาตรฐาน::make_pair ( 'ฮันนา' , ยี่สิบ ) ) ;

มาตรฐาน::cout << “ข้อมูลเดิม: \n ' ;
สำหรับ ( เชื่อมต่ออัตโนมัติ & รายการ : ข้อมูล ) {
มาตรฐาน::cout << 'ชื่อ: ' << รายการแรก << ', อายุ: ' << รายการวินาที << มาตรฐาน::endl;
}


มาตรฐาน::เรียงลำดับ ( ข้อมูลเริ่มต้น ( ) , info.end ( ) ) ;

มาตรฐาน::cout << ' \n ข้อมูลที่เรียงลำดับ: \n ' ;
สำหรับ ( เชื่อมต่ออัตโนมัติ & รายการ : ข้อมูล ) {
มาตรฐาน::cout << 'อายุ: ' << รายการวินาที << ', ชื่อ: ' << รายการแรก << มาตรฐาน::endl;
}

กลับ 0 ;
}


ในตัวอย่างโค้ด C++ นี้ เรากำลังทำงานกับเวกเตอร์คู่เพื่อจัดเก็บและจัดการข้อมูลที่เกี่ยวข้องกับแต่ละบุคคล โดยเฉพาะชื่อและอายุของพวกเขา เราเริ่มต้นเวกเตอร์ชื่อ “info of pairs” ภายในฟังก์ชัน main() จากนั้น เราเติมเวกเตอร์นี้ด้วยคู่สามคู่ แต่ละคู่ประกอบด้วยชื่อและอายุของบุคคลที่แตกต่างกัน โดยใช้ฟังก์ชัน 'push_back' และ 'std::make_pair' เพื่อสร้างคู่ที่มีประสิทธิภาพ

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

ตัวอย่างที่ 3: การรวมเวกเตอร์ประเภทต่างๆ

คุณอาจพบบางสถานการณ์ที่คุณต้องรวมข้อมูลจากเวกเตอร์สองตัว เวกเตอร์คู่สามารถช่วยรักษาความสัมพันธ์ระหว่างองค์ประกอบจากเวกเตอร์ทั้งสองได้

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

int หลัก ( ) {
มาตรฐาน::เวกเตอร์ < มาตรฐาน::string > เมือง = { 'นิวยอร์ก' , 'ปารีส' , 'โตเกียว' } ;
มาตรฐาน::เวกเตอร์ < ภายใน > ประชากร = { 8175133 , 2140526 , 37435191 } ;

มาตรฐาน::เวกเตอร์ < มาตรฐาน::คู่ < std::string, int >> เมืองประชากรคู่;

สำหรับ ( size_t ฉัน = 0 ; ฉัน < มาตรฐาน::ขั้นต่ำ ( เมือง.ขนาด ( ) , จำนวนประชากร. ขนาด ( ) ) ; ++ผม ) {
cityPopulationPairs.push_back ( { เมืองต่างๆ [ ฉัน ] , ประชากร [ ฉัน ] } ) ;
}

มาตรฐาน::cout << 'คู่เมือง-ประชากร:' << มาตรฐาน::endl;
สำหรับ ( เชื่อมต่ออัตโนมัติ & คู่ : cityPopulationPairs ) {
มาตรฐาน::cout << 'เมือง: ' << คู่แรก << ', ประชากร: ' << คู่.วินาที << มาตรฐาน::endl;
}

กลับ 0 ;
}


ในฟังก์ชัน 'main' ของโค้ด จะมีการประกาศเวกเตอร์สองตัว: 'เมือง' เพื่อจัดเก็บชื่อเมือง และ 'ประชากร' เพื่อจัดเก็บค่าประชากรที่สอดคล้องกัน

เวกเตอร์ที่สาม 'cityPopulationPairs' ถูกกำหนดไว้เพื่อจัดเก็บคู่ของเมืองและประชากรตามลำดับ แต่ละคู่คือ “std::pair” โดยที่ “std::string” แทนชื่อเมือง และ “int” แทนจำนวนประชากร จากนั้นเราใช้การวนซ้ำ “for” บนเวกเตอร์ (เมืองและประชากร) โดยใช้ “std::min” เพื่อให้แน่ใจว่าลูปจะไม่เข้าถึงองค์ประกอบที่เกินกว่าขนาดเวกเตอร์ที่เล็กกว่าทั้งสอง ภายในลูป คู่ข้อมูลประชากรในเมืองจะถูกสร้างขึ้นและต่อท้ายเวกเตอร์ 'cityPopulationPairs'

หลังจากรวมข้อมูลแล้ว จะมีการใช้ลูป 'for' อีกวงหนึ่งเพื่อวนซ้ำคู่ต่างๆ ที่จัดเก็บไว้ใน 'cityPopulationPairs' จากนั้นข้อมูลที่รวมกันจะแสดงบนเอาต์พุตมาตรฐานโดยใช้ 'std::cout' ซึ่งแสดงถึงแต่ละเมืองและจำนวนประชากรที่เกี่ยวข้องอย่างชัดเจน

ตัวอย่างที่ 4: การค้นหาค่าสูงสุดและต่ำสุด

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

#รวม
#รวม <เวกเตอร์>
#รวม <อัลกอริทึม>

int หลัก ( ) {
มาตรฐาน::เวกเตอร์ < ภายใน > ตัวเลข = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

มาตรฐาน::เวกเตอร์ < มาตรฐาน::คู่ < คุณคุณ >> minMaxPairs;

มาตรฐาน::เรียงลำดับ ( ตัวเลข.เริ่มต้น ( ) , ตัวเลข.end ( ) ) ;

minMaxPairs.push_back ( { ตัวเลขด้านหน้า ( ) , ตัวเลขด้านหลัง ( ) } ) ;

มาตรฐาน::cout << 'คู่ต่ำสุด-สูงสุด:' << มาตรฐาน::endl;
สำหรับ ( เชื่อมต่ออัตโนมัติ & คู่ : minMaxPairs ) {
มาตรฐาน::cout << “มิน:” << คู่แรก << ', แม็กซ์: ' << คู่.วินาที << มาตรฐาน::endl;
}

กลับ 0 ;
}


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

ฟังก์ชันนี้มีจุดมุ่งหมายเพื่อจัดเรียงองค์ประกอบตามลำดับจากน้อยไปมาก ทำให้กระบวนการระบุทั้งค่าต่ำสุดและค่าสูงสุดในชุดข้อมูลง่ายขึ้น การดำเนินการเรียงลำดับจะใช้กับเวกเตอร์ 'ตัวเลข' โดยใช้ number.begin() และ number.end() เป็นพารามิเตอร์ช่วง หลังจากขั้นตอนการเรียงลำดับ โปรแกรมจะสร้างเวกเตอร์ของคู่ 'minMaxPairs' เพื่อจัดเก็บค่าต่ำสุดและค่าสูงสุดที่คำนวณได้ จากนั้นใช้ฟังก์ชัน 'push_back' เพื่อเพิ่มคู่เดียวที่มีองค์ประกอบแรก (ต่ำสุด) และสุดท้าย (สูงสุด) ของเวกเตอร์ตัวเลขที่เรียงลำดับแล้ว สุดท้าย โปรแกรมจะส่งออกผลลัพธ์โดยการวนซ้ำผ่านเวกเตอร์ “minMaxPairs” และแสดงค่าต่ำสุดและสูงสุด

บทสรุป

โดยสรุป เวกเตอร์ C++ ของคู่ปรากฏเป็นโครงสร้างข้อมูลที่ทรงพลังและยืดหยุ่น เพิ่มชั้นของความอเนกประสงค์ให้กับงานการเขียนโปรแกรม จากการสำรวจไวยากรณ์และการใช้งานจริงอย่างละเอียด เราได้เห็นว่าคอนเทนเนอร์นี้ช่วยจัดระเบียบการเชื่อมโยงคีย์-ค่า รวมข้อมูลจากเวกเตอร์ต่างๆ และติดตามค่าต่ำสุดและสูงสุดได้อย่างไร