การผูกโครงสร้างใน C ++ คืออะไร
การรวมโครงสร้างเป็นคุณลักษณะของ C++ ที่เพิ่มเข้ามาใน C++17 ซึ่งช่วยให้สามารถแยกโครงสร้างหรือทูเพิลออกเป็นตัวแปรแต่ละตัวได้ ซึ่งช่วยปรับปรุงความกระชับของโค้ด สามารถใช้เพื่อทำให้ไวยากรณ์การเข้าถึงสมาชิก struct ง่ายขึ้น และลดความเป็นไปได้ของข้อผิดพลาดที่เกิดจากการพิมพ์ผิดหรือการจัดทำดัชนีที่ไม่ถูกต้อง
ไวยากรณ์
ไวยากรณ์ของการรวมโครงสร้างใน C++ มีดังนี้:
อัตโนมัติ [ var1 , var2 , ... ] = การแสดงออก ;
ในไวยากรณ์สำหรับการรวมโครงสร้างใน C++ โดยที่ 'var1' และ 'var2' เป็นชื่อตัวแปร และ 'expression' เป็นนิพจน์ที่ให้ผลลัพธ์ของโครงสร้างหรือคลาส เราใช้คำหลักอัตโนมัติเพื่อประกาศตัวแปรที่สร้างขึ้นโดยอัตโนมัติ
การปรับเปลี่ยน
สามารถใช้ตัวดัดแปลงในการจับคู่กับการโยงที่มีโครงสร้าง ไวยากรณ์ของพวกเขาระบุไว้ด้านล่าง:
อัตโนมัติ & [ ก , ข , ค , ... ] = การแสดงออก ;
อัตโนมัติ && [ ก , ข , ค , ... ] = การแสดงออก ;
ตัวดำเนินการ '&' หรือ '&&' ที่ใช้ในการประกาศกำหนดว่าการเชื่อมโยงเป็นการอ้างอิง lvalue หรือ rvalue การอ้างอิง lvalue ที่แสดงโดย '&' สร้างการอ้างอิงที่อาจใช้เพื่อเปลี่ยนค่าของตัวแปรการโยง การเปลี่ยนแปลงค่าที่ทำโดยใช้การอ้างอิงจะเห็นได้ในโครงสร้างเดิมหรือทูเพิล
ในทางกลับกัน การอ้างอิงค่า rvalue ที่แสดงโดย '&&' ให้การอ้างอิงที่จำกัดไว้เพื่อใช้ในการอ่านค่าของตัวแปรที่รวมอยู่ในการเชื่อมโยง มีประโยชน์สำหรับการผูกกับวัตถุชั่วคราวหรือ rvalues ที่จำเป็นต้องทำลาย เนื่องจากหลีกเลี่ยงการสร้างแบบจำลองของวัตถุ ซึ่งอาจเป็นหน่วยความจำและใช้เวลานาน
ตัวอย่างที่ 1: การผูกโครงสร้างใน C++
ต่อไปนี้เป็นตัวอย่างของการรวมโครงสร้าง C++:
#รวมใช้เนมสเปซมาตรฐาน ;
โครงสร้าง ลูกบาศก์
{
นานาชาติ x ;
นานาชาติ และ ;
นานาชาติ กับ ;
} ;
นานาชาติ หลัก ( )
{
c-ลูกบาศก์ = { 10 , ยี่สิบ , 30 } ;
อัตโนมัติ [ x_พิกัด , y_พิกัด , z_พิกัด ] = ค ;
ศาล << 'แกน X : ' << x_พิกัด << จบ ;
ศาล << 'แกน Y : ' << y_พิกัด << จบ ;
ศาล << 'แกน Z : ' << z_พิกัด << จบ ;
กลับ 0 ;
}
ในตัวอย่างข้างต้น เราประกาศ struct คิวบ์ด้วยจำนวนเต็มสามจำนวน x, y และ z โครงสร้างแสดงลูกบาศก์ในอวกาศ ตัวแปร c ของประเภทคิวบ์ถูกสร้างขึ้นและเริ่มต้นด้วยค่า (10,20,30) ในการรวมโครงสร้างโค้ดนี้ กำหนดค่าของสมาชิก x, y และ z ของ struct ให้กับตัวแปรแต่ละตัว x_coordinate, y_coordinate, z_coordinate ตามลำดับ โดยใช้ syntax auto[ x_coordinate, y_coordinate, z_coordinate ] = c ผลลัพธ์ของด้านบนแสดงไว้ด้านล่าง:
ตัวอย่างที่ 2: การผูกโครงสร้างใน C++ เพื่อแกะโครงสร้าง
ต่อไปนี้เป็นตัวอย่างของการรวมโครงสร้างของการแกะโครงสร้าง:
#รวมถึง#รวมถึง <สตริง>
ใช้เนมสเปซมาตรฐาน ;
โครงสร้าง นักเรียน {
ชื่อสตริง ;
นานาชาติ อายุ ;
} ;
นานาชาติ หลัก ( ) {
นักเรียน { 'ฮัมซา' , 32 } ;
อัตโนมัติ [ ชื่อ , อายุ ] = ส ;
ศาล << ชื่อ << ' เป็น ' << อายุ << ' ปี.' << จบ ;
กลับ 0 ;
}
ในโค้ดด้านบน โครงสร้าง Student มีสมาชิกสองตัว: ชื่อ นั่นคือสตริงและ อายุ นั่นคือจำนวนเต็ม จากนั้น เราสร้างวัตถุ Student และกำหนดค่าเริ่มต้นให้กับสมาชิกแต่ละตัว สมาชิกของ s จะถูกแยกออกเป็นชื่อและอายุของตัวแปรโดยใช้การรวมโครงสร้าง จากนั้นค่าเหล่านี้จะถูกพิมพ์ตามภาพหน้าจอด้านล่าง:
ตัวอย่างที่ 3: การผูกโครงสร้างใน C++ ด้วยตัวดัดแปลง
ด้านล่างนี้เป็นตัวอย่างของการรวมโครงสร้างที่ใช้ตัวแก้ไขเพื่ออัปเดตค่าของตัวแปรเป็น num1 และ num2:
#รวมถึง#รวม
ใช้เนมสเปซมาตรฐาน ;
นานาชาติ หลัก ( ) {
ทูเพิล < นานาชาติ , นานาชาติ > ที { 25 , ยี่สิบ } ;
อัตโนมัติ & [ หมายเลข 1 , หมายเลข 2 ] = ที ;
ศาล << 'ค่าของ num1 = ' << หมายเลข 1 << ', num2 = ' << หมายเลข 2 << ' \n ' ;
หมายเลข 1 = 30 ;
ศาล << 'ค่าที่เปลี่ยนแปลงของ num1 = ' << หมายเลข 1 << ', num2 = ' << หมายเลข 2 <<
' \n ' ;
อัตโนมัติ && [ หมายเลข 3 , หมายเลข 4 ] = make_tuple ( 100 , 250 ) ;
ศาล << 'ตอนนี้ค่าของ num3 = ' << หมายเลข 3 << ', num4 = ' << หมายเลข 4 << ' \n ' ;
กลับ 0 ;
}
ในโค้ดก่อนหน้านี้ เราสร้าง tuple t และใช้การอ้างอิง lvalue เพื่อเชื่อมโยงส่วนประกอบกับ num1 และ num2 จากนั้นเราเปลี่ยนค่าของ num1 เป็น 30 และส่งออกค่า num1 และ num2 สร้าง tuple ชั่วคราวด้วย make_tuple(100, 250) และใช้การอ้างอิง rvalue เพื่อผูกองค์ประกอบกับ num3 และ num4 จากนั้นพิมพ์ค่าของ num3 และ num4 เนื่องจาก num3 และ num4 อยู่คู่กับการอ้างอิง rvalue จึงไม่สามารถใช้เปลี่ยนทูเพิลชั่วคราวที่สร้างโดย make_tuple(100, 250) พวกเขาสามารถอ่านได้จากมันเท่านั้น เมื่อคุณรันโปรแกรม ผลลัพธ์ต่อไปนี้จะแสดงบนหน้าจอ:
บทสรุป
การรวมโครงสร้างเป็นคุณลักษณะใน C++ ที่แยกค่าหลายค่าของโครงสร้างหรือคลาสออกเป็นตัวแปรแต่ละตัวในนิพจน์เดียว ทำให้ได้โค้ดที่กระชับ อ่านง่าย และปลอดภัยยิ่งขึ้น การรวมโครงสร้างโดยใช้ตัวดัดแปลงช่วยเพิ่มความคล่องตัวในกระบวนการเปลี่ยนค่าภายในวัตถุที่มีโครงสร้าง