การผูกโครงสร้างใน C++

Kar Phuk Khorngsrang Ni C



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

การผูกโครงสร้างใน 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++ ที่แยกค่าหลายค่าของโครงสร้างหรือคลาสออกเป็นตัวแปรแต่ละตัวในนิพจน์เดียว ทำให้ได้โค้ดที่กระชับ อ่านง่าย และปลอดภัยยิ่งขึ้น การรวมโครงสร้างโดยใช้ตัวดัดแปลงช่วยเพิ่มความคล่องตัวในกระบวนการเปลี่ยนค่าภายในวัตถุที่มีโครงสร้าง