ไวยากรณ์:
แม่แบบ < ชั้น T > โมฆะ แลกเปลี่ยน ( ตู่ & ตัวแปร_1 , ตู่ & ตัวแปร_2 ) ;ทั้งค่าของตัวแปรแรกและตัวแปรที่สอง ซึ่งทั้งสองค่าเก็บค่าจะถูกสลับกัน ฟังก์ชันเพียงแค่เปลี่ยนค่าของตัวแปร มันไม่มีผลลัพธ์”
การทำงานของฟังก์ชัน swap() ใน C++
ฟังก์ชั่น swap ถูกนำมาใช้ใน C ++ โดยใช้สามบรรทัดต่อไปนี้
แม่แบบ โมฆะ แลกเปลี่ยน ( ตู่ & ผม , ตู่ & เจ ) {
อุณหภูมิ = มาตรฐาน :: เคลื่อนไหว ( ผม ) ;
ผม = มาตรฐาน :: เคลื่อนไหว ( เจ ) ;
เจ = มาตรฐาน :: เคลื่อนไหว ( อุณหภูมิ ) ;
}
คำสั่ง 'T temp = std::move(i)'; ทำสำเนาขององค์ประกอบ 'i' และทำซ้ำ ที่นี่ “i = std::move(j)”; ทิ้งรายการต้นฉบับของ 'i' และเก็บสำเนา 'i' ของ 'j' ไว้แทนที่ 'j' ต้นฉบับ สูตร “j = std:: move(temp)”; บันทึก 'i' ด้วยโคลนของ temp และลบเนื้อหาที่เหมือนกันของ temp นอกจากนี้ ให้ลบตัวแปร temp หลังจากการดำเนินการของฟังก์ชัน swap() เสร็จสิ้น
ตัวอย่างที่ 1: โปรแกรมที่ใช้ std::move Method เป็น Swap
ดังที่แสดงด้านล่าง เราสามารถสลับสองอ็อบเจ็กต์โดยใช้คุณลักษณะ C++11 std::move
#include
#include <เวกเตอร์>
แม่แบบ
โมฆะ แลกเปลี่ยน ( ตู่ & เอ , ตู่ & ข )
{
อุณหภูมิ = มาตรฐาน :: เคลื่อนไหว ( เอ ) ;
เอ = มาตรฐาน :: เคลื่อนไหว ( ข ) ;
ข = มาตรฐาน :: เคลื่อนไหว ( อุณหภูมิ ) ;
}
int หลัก ( )
{
มาตรฐาน :: เวกเตอร์ รายการ = { 10 , 12 , 13 , สิบห้า , 16 , 17 } ;
int ผม = 3 , เจ = 5 ;
แลกเปลี่ยน ( รายการ [ ผม ] , รายการ [ เจ ] ) ;
สำหรับ ( int ผม : รายการ ) {
มาตรฐาน :: ศาล << ผม << ' ' ;
}
กลับ 0 ; }
เรามีการประกาศเทมเพลตที่มีวัตถุ 'T' หลังจากนั้นเราได้สร้างฟังก์ชันเป็น 'swap' ฟังก์ชันใช้พารามิเตอร์สองตัว &a และ &b ประเภท 'T' อันเป็นผลมาจากอาร์กิวเมนต์ T& a, T& b อ้างอิงหรือจัดเก็บที่อยู่ของตัวแปรที่ส่งผ่านและนำไปใช้กับตัวแปรโดยตรงโดยไม่ส่งคืน ฟังก์ชัน swap(T& a, T& b) จะเรียกว่าการเรียกโดยการอ้างอิง
ภายใน void swap เราได้ใช้อัลกอริธึมของการสลับโดยใช้เมธอด std::move จากนั้นเราก็สร้างโปรแกรมหลัก ในที่นี้ เราได้ประกาศตัวแปร 'รายการ' และเริ่มต้นตัวแปรด้วยรายการค่าตัวเลข เราได้ตั้งค่าสำหรับ 'i' และ 'j' สำหรับการสลับ ค่าตัวเลขที่อยู่ในดัชนีที่สองถูกแทนที่ด้วยค่าตัวเลขที่ดัชนีที่ห้า จากนั้น เราเรียกฟังก์ชัน swap และส่งดัชนี 'i' และ 'j' ไปยังฟังก์ชันดังกล่าวเพื่อแลกเปลี่ยน for loop ใช้สำหรับพิมพ์รายการที่สลับ
ผลลัพธ์แสดงรายการที่แก้ไข คุณสามารถสังเกตรายการใหม่ที่สร้างขึ้นโดยสลับค่าตามดัชนีที่ระบุ
ตัวอย่างที่ 2: โปรแกรมที่ใช้ std::swap Method เป็น Swap
การใช้กลไก std::swap ที่พบในส่วนหัวของยูทิลิตี้ (ใน C++11) เป็นการแก้ไขตามปกติ ค่าของอ็อบเจ็กต์สองรายการถูกเปลี่ยนเพื่อให้ทำงานได้
#include#include <เวกเตอร์>
#include <ยูทิลิตี้>
int หลัก ( )
{
มาตรฐาน :: vectorarr = { 3 , 6 , 9 , สิบห้า , 13 } ;
int ผม = 3 , เจ = 4 ;
มาตรฐาน :: แลกเปลี่ยน ( arr [ ผม ] , arr [ เจ ] ) ;
สำหรับ ( int ผม : arr ) {
มาตรฐาน :: ศาล << ผม << ' ' ;
}
กลับ 0 ;
}
โดยการนำเข้าไฟล์ส่วนหัว
รายการที่ได้รับหลังจากการดำเนินการสลับโดยใช้วิธี std::swap จะแสดงดังนี้:
ตัวอย่างที่ 3: โปรแกรมโดยใช้วิธี std::iter_swap เพื่อสลับ
การใช้อัลกอริทึม std::iter_swap ซึ่งแสดงอยู่ในส่วนหัวของอัลกอริทึม เป็นตัวเลือกเพิ่มเติม วิธีดำเนินการคือเปลี่ยนค่าของอ็อบเจ็กต์ที่ตัววนซ้ำที่ให้มาชี้ไป
#include#include <เวกเตอร์>
#include
#include <อัลกอริทึม>
int หลัก ( )
{
มาตรฐาน :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int ผม = 0 , เจ = 4 ;
รถยนต์ itr1 = มาตรฐาน :: ต่อไป ( บางสิ่ง. เริ่ม ( ) , ผม ) ;
รถยนต์ itr2 = มาตรฐาน :: ต่อไป ( บางสิ่ง. เริ่ม ( ) , เจ ) ;
มาตรฐาน :: iter_swap ( itr1 , itr2 ) ;
สำหรับ ( int ผม : บางสิ่ง ) {
มาตรฐาน :: ศาล << ผม << ' ' ;
}
กลับ 0 ;
}
สำหรับวิธีการหลักของโปรแกรม เราได้ประกาศตัวแปรเวกเตอร์ “vec” และกำหนดรายการตัวเลขเวกเตอร์ให้กับมัน จากนั้น เราระบุตำแหน่งดัชนีให้กับตัวแปร “i” และ “j” เมธอด std::iter_swap ถูกเรียกใช้โดยใช้ iter1 และ iter2 เป็นอาร์กิวเมนต์ iter1 และ iter2 ถูกประกาศด้วยคำสำคัญ auto และมีการดำเนินการวนซ้ำ วิธี for loop พิมพ์ค่าที่สลับของอาร์เรย์เวกเตอร์เมื่อดำเนินการ
เมธอด std::iter_swap สลับค่าของเวกเตอร์ที่ระบุสำเร็จ
ตัวอย่างที่ 4: โปรแกรมการใช้โดยไม่มีตัวแปรชั่วคราวเพื่อสลับ
ตัวอย่างนี้แสดงวิธีใหม่ในการแลกเปลี่ยนตัวเลขในโค้ด C++ โดยไม่ต้องใช้ตัวแปรชั่วคราว
#includeใช้เนมสเปซ std ;
int หลัก ( )
{
int x1 = สอง , x2 = 12 ;
ศาล << “ก่อนเปลี่ยน” << endl ;
ศาล << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;
x1 = x1 + x2 ;
x2 = x1 - x2 ;
x1 = x1 * x2 ;
ศาล << ' \n หลังจากเปลี่ยน” << endl ;
ศาล << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;
กลับ 0 ; }
มาดูการทำงานของโปรแกรมนี้กัน ในที่นี้ เราได้ประกาศ x1 และ x2 ซึ่งตั้งค่าเริ่มต้นด้วยตัวเลขตามลำดับ จากนั้น ใช้สูตร x1 = x1+ x2 เพิ่ม x1 และ x2 แล้วใส่ผลลัพธ์เป็น x1 นี่แสดงว่า x1 เท่ากับ 2 บวก 12 ดังนั้น ตอนนี้ เท่ากับ 14 จากนั้น เราใช้สูตร x2 = x1 – x2 นี่แสดงว่า x2 = 14 – 12 ดังนั้น x2 ตอนนี้เท่ากับ 2 อีกครั้ง เราใช้สูตร x1 = x1 – x2 นี่แสดงว่า x1 = 14 – 2 ดังนั้น x1 = 12 ในตอนท้าย เป็นผลให้มีการสลับตัวเลข
หมายเลขที่สลับก่อนและหลังจะแสดงบนหน้าจอพร้อมท์ต่อไปนี้
บทสรุป
ในที่นี้ เราจะพูดถึงคำอธิบายแบบเต็มของ swap() ใน C++ การใช้งาน และตัวอย่างบางส่วนที่แสดงให้เห็นว่ามันทำงานอย่างไร โดยใช้ฟังก์ชัน std:: swap() ค่าของตัวแปรสองตัวแปรสามารถเปลี่ยนได้ C++ STL มีฟังก์ชันในตัวที่เรียกว่า std::swap() การเรียกใช้ฟังก์ชัน swap(T& ตัวแปร 1, ตัวแปร T& 2) โดยการอ้างอิง และ C++ โอเวอร์โหลด swap() ขึ้นอยู่กับประเภทของตัวแปรข้อมูลจะอธิบายไว้ในบทช่วยสอนนี้ด้วย