วิธีคืนค่าหลายค่าใน C ++

Withi Khun Kha Hlay Kha Ni C



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

ตัวอย่างที่ 1: การใช้สิ่งอันดับ/คู่

มาสาธิตการใช้งานจริงเพื่อส่งคืนค่าหลายค่าในภาษา C++ กัน ที่นี่ เราใช้เทคนิคสิ่งอันดับ/คู่เพื่อช่วยส่งคืนค่าหลายค่าในโค้ดของเรา C++ มีไฟล์ส่วนหัวต่างๆ ซึ่งเราต้องรวมไว้ในโค้ดของเรา เรารวม “bits/stdc++.h” ไว้ที่นี่เนื่องจากมีไลบรารีทั้งหมดของการเขียนโปรแกรม C++ จากนั้น เนมสเปซจะถูกเพิ่มที่นี่ซึ่งก็คือ 'std' หลังจากนี้ เราใช้คีย์เวิร์ด 'ทูเพิล' โดยเราวางประเภทข้อมูลสามประเภท ข้อมูลโฟลตสองประเภท และประเภทข้อมูล 'ถ่าน' ที่เหลือหนึ่งประเภท ด้านล่างเราใช้คีย์เวิร์ด 'return' เพื่อแพ็คค่าเพื่อส่งคืน tuple

ตอนนี้เราใช้วิธี 'คู่' เพื่อส่งกลับค่าหลายค่า ในเมธอด 'คู่' นี้ เราใส่ประเภทข้อมูลของตัวแปร 2 ชนิด และทั้งสองประเภทเป็นแบบ 'ลอย' ที่นี่ ตัวแปรมีชื่อว่า 'float_1' และ 'float_2' จากนั้น เราแพ็คค่าสองค่าเพื่อกลับไปยัง 'คู่' หลังจากนี้ เราจะเรียกใช้ 'main()' ที่นี่ จากนั้นจึงประกาศตัวแปร 'float' สองตัวด้วยชื่อ 'f_1, f_2' ตัวแปร “char” ก็ถูกประกาศที่นี่เป็น “myChar” เช่นกัน จากนั้น เราจะแยกค่าที่ส่งคืนโดยฟังก์ชัน “My_Tuple()”







ด้านล่างนี้ เราจะจัดเก็บค่าที่ส่งคืนเป็นคู่ๆ เราเก็บ ”4.99, 8.98” ไว้ในฟังก์ชัน “My_Tuple” และ “6.86, 3.22” ไว้ในฟังก์ชัน “My_Pair” จากนั้นเราใช้ 'cout' ที่พิมพ์ข้อมูลทั้งหมดที่เขียนอยู่ข้างใน



รหัส 1:



#รวม
โดยใช้ เนมสเปซ มาตรฐาน ;
สิ่งอันดับ < ลอย , ลอย , ถ่าน > My_Tuple ( ลอย ฉ_1, ลอย ฉ_2 ) {
กลับ make_tuple ( ฉ_2, ฉ_1, '$' ) ;
}
คู่ < ลอย , ลอย > My_Pair ( ลอย ฉ_เอ, ลอย FB ) {
กลับ make_pair ( ฉ_ข, ฉ_ก ) ;
}
ภายใน หลัก ( ) {
ลอย ฉ_1,ฉ_2 ;
ถ่าน myChar ;
ผูก ( f_1, f_2, มายชาร์ ) = My_Tuple ( 4.99 , 8.98 ) ;
จับคู่ new_p = My_Pair ( 6.86 , 3.22 ) ;
ศาล << 'ค่าที่เราได้รับจากสิ่งอันดับ : ' ;
ศาล << ฉ_1 << ' ' << ฉ_2 << ' ' << myChar << สิ้นสุด ;
ศาล << 'ค่าที่เราได้รับจากคู่: ' ;
ศาล << ใหม่_p อันดับแรก << ' ' << ใหม่_p ที่สอง ;
กลับ 0 ;
}

เอาท์พุต : :





ค่าที่เราได้รับจากที่นี่โดยใช้วิธี 'tuples' และ 'pair' จะแสดงดังต่อไปนี้ โปรดทราบว่าจะส่งคืนค่าหลายค่าที่นี่



ตัวอย่างที่ 2: การใช้พอยน์เตอร์

เราส่งพารามิเตอร์พร้อมกับที่อยู่ในฟังก์ชัน 'เปรียบเทียบ' ที่นี่ เราเพิ่ม “value_1” และ “value_2” ของประเภท “int” และ “int* g_Address, int* s_Address” หลังจากนี้ เราใช้เงื่อนไข 'if' โดยเพิ่มเงื่อนไขว่า 'value_1' มากกว่า 'value_2' หากเป็นไปตามนี้ คำสั่งต่อไปนี้จะถูกดำเนินการ หากไม่เป็นเช่นนั้น ระบบจะเพิกเฉยต่อคำสั่งที่เพิ่มไว้ด้านล่างนี้และย้ายไปยังส่วน 'อื่น' ตอนนี้หลังจากเรียกใช้ 'main()' แล้ว เราจะประกาศตัวแปรใหม่สี่ตัวด้วยชื่อ 'g_value', 's_value', 'newValue1' และ 'newValue2'

หลังจากนี้ เราจะพิมพ์ข้อความเพื่อป้อนตัวเลข จากนั้นวาง “cin” ซึ่งรับค่าสองค่าจากผู้ใช้ ค่าที่ผู้ใช้ป้อนจะถูกบันทึกไว้ในตัวแปร 'newValue1' และ 'newValue2' ตามลำดับ หลังจากนี้ เราจะเรียกฟังก์ชัน “compare()” ที่เราสร้างไว้ก่อนหน้านี้ และส่งพารามิเตอร์สี่ตัวเข้าไป จากนั้นเราจะแสดงผลหลังจากดำเนินการฟังก์ชัน “เปรียบเทียบ” และจะแสดงจำนวนที่มากกว่าและจำนวนที่น้อยกว่าจากตัวเลขที่ผู้ใช้ป้อน

รหัส 2:

#รวม
โดยใช้ เนมสเปซ มาตรฐาน ;
เป็นโมฆะ เปรียบเทียบ ( ภายใน ค่า_1, ภายใน ค่า_2, ภายใน * g_ที่อยู่ ภายใน * s_ที่อยู่ )
{
ถ้า ( ค่า_1 > ค่า_2 ) {
* g_ที่อยู่ = ค่า_1 ;
* s_ที่อยู่ = ค่า_2 ;
}
อื่น {
* g_ที่อยู่ = ค่า_2 ;
* s_ที่อยู่ = ค่า_1 ;
}
}
ภายใน หลัก ( )
{
ภายใน g_value, s_value, newValue_1, newValue_2 ;
ศาล << 'กรุณากรอกตัวเลขสองตัว: ' <> ใหม่Value_1 >> ใหม่Value_2 ;
เปรียบเทียบ ( ใหม่Value_1, ใหม่Value_2, & g_value, & s_value ) ;
ศาล << ' \n จำนวนที่มากกว่าคือ ' << g_value << ' และจำนวนที่น้อยกว่าคือ '
<< s_value ;
กลับ 0 ;
}

เอาท์พุต : :
ผู้ใช้ป้อน '86' และ '23' ที่นี่ หลังจากกด 'Enter' ก็จะแสดงผล ด้วยวิธีนี้เราจะได้ค่าหลายค่า

ตัวอย่างที่ 3: การใช้อาร์เรย์

เราสร้างฟังก์ชัน 'ComputeComparison()' ที่นี่ โดยเราจะแทรกตัวแปรสองตัว 'num_1' และ 'num_2' เป็นประเภท 'int' และยังมีอาร์เรย์ชื่อ 'my_arr[]' หลังจากนี้ เรามีเงื่อนไข 'if' ซึ่งจะตรวจสอบว่า 'num_1' มากกว่า 'num_2' หรือไม่ หากเป็นจริง 'num_1' จะถูกกำหนดให้กับ 'my_arr[0]' และ 'num_2' จะถูกกำหนดให้กับ 'my_arr[1]' แต่ถ้าเงื่อนไขไม่เป็นความจริง คำสั่งที่อยู่หลัง 'else' จะถูกดำเนินการ โดยเราจะกำหนด 'num_2' ให้กับ 'my_arr[0]' และ 'num_1' ให้กับ 'my_arr[1]'

หลังจากนี้ เราเรียก 'main()' ที่นี่ แล้วประกาศตัวแปร int อีกสองตัว: 'newNum_1' และ 'newNum_2' หลังจากนี้ จะมีการประกาศอาร์เรย์ขนาด '2' หลังจากนี้ เราจะได้ตัวเลขสองตัวจากผู้ใช้โดยใช้ 'cin' จากนั้นจึงเรียกใช้ฟังก์ชัน 'ComputeComparison()' และแสดงผลลัพธ์ต่อไปนี้ ดังนั้นจึงส่งกลับค่าหลายค่าที่นี่

รหัส 3:

#รวม
โดยใช้ เนมสเปซ มาตรฐาน ;
เป็นโมฆะ การเปรียบเทียบการคำนวณ ( ภายใน หมายเลข_1, ภายใน หมายเลข_2, ภายใน my_arr [ ] )
{

ถ้า ( หมายเลข_1 > หมายเลข_2 ) {
my_arr [ 0 ] = หมายเลข_1 ;
my_arr [ 1 ] = หมายเลข_2 ;
}
อื่น {
my_arr [ 0 ] = หมายเลข_2 ;
my_arr [ 1 ] = หมายเลข_1 ;
}
}

ภายใน หลัก ( )
{
ภายใน ใหม่Num_1, ใหม่Num_2 ;
ภายใน my_arr [ 2 ] ;

ศาล << 'กรุณากรอกตัวเลขสองตัวเพื่อเปรียบเทียบ' <> ใหม่Num_1 >> ใหม่Num_2 ;
การเปรียบเทียบการคำนวณ ( newNum_1, newNum_2, my_arr ) ;
ศาล << ' \n จำนวนที่มากกว่าคือ ' << my_arr [ 0 ] << ' และ '
'จำนวนที่น้อยกว่าคือ' << my_arr [ 1 ] ;

กลับ 0 ;
}

เอาท์พุต : :
เราพิมพ์ทั้ง '54' และ '98' ที่นี่แล้วกด 'Enter' เพื่อแสดงผลลัพธ์ มันแสดงตัวเลขที่มากกว่าและน้อยกว่าจากตัวเลขที่เราป้อน

ตัวอย่างที่ 4: การใช้สิ่งอันดับ

รวมไฟล์ส่วนหัวสองไฟล์ไว้ที่นี่: “tuple” และ “iostream” จากนั้นใส่เนมสเปซ 'std' ไว้ที่นี่ ต่อไป เราใช้คีย์เวิร์ด “tuple” และแทรกข้อมูลสองประเภทซึ่งก็คือ “int” หลังจากนี้ เราจะสร้างฟังก์ชันด้วยชื่อ “findingValues()” และส่งผ่าน “intValue_1” และ “intValue2” เป็นพารามิเตอร์

จากนั้น 'if' จะถูกวางไว้ในตำแหน่งที่เราพิมพ์เงื่อนไข 'intValue_1 < intValue_2' ด้านล่างนี้ เราใช้คีย์เวิร์ด “return” และวางฟังก์ชัน “make_tuple()” โดยที่ตัวแปรทั้งสองถูกเพิ่มเป็นพารามิเตอร์ “intValue_1, intValue2_” จากนั้นเรามีส่วน 'else' ที่เราใส่ 'return' อีกครั้งพร้อมกับฟังก์ชัน 'make_tuple()' แต่ที่นี่ เราวาง 'intValue_2' ก่อนแล้วจึงใส่ 'intValue1' ตอนนี้เราเรียก 'main()' และเริ่มต้น 'new_value1' ด้วย '5' และ 'new_value2' ด้วย '28'

ต่อไปนี้เราจะประกาศตัวแปรประเภท 'int' อีกสองตัวด้วยชื่อ 'greater' และ 'smaller' จากนั้น เราวางฟังก์ชัน 'tie()' และส่งตัวแปร 'เล็กกว่า ยิ่งมากขึ้น' เป็นพารามิเตอร์ และยังเรียกฟังก์ชัน 'findingValues()' ที่นี่ด้วย หลังจากนี้ เราจะพิมพ์ทั้งสองค่า: ยิ่งมากและน้อย

รหัส 4:

#รวม
#รวม<ทูเพิล>
โดยใช้ เนมสเปซ มาตรฐาน ;
ทูเพิล  การหาค่า ( ภายใน intValue_1, ภายใน intValue_2 )
{
ถ้า ( intValue_1 < intValue_2 ) {
กลับ make_tuple ( intValue_1 , intValue_2 ) ;
}
อื่น {
กลับ make_tuple ( intValue_2 , intValue_1 ) ;
}
}
ภายใน หลัก ( )
{
ภายใน ใหม่_ค่า1 = 5 , ใหม่_ค่า2 = 28 ;
ภายใน ยิ่งใหญ่กว่าเล็กกว่า ;
ผูก ( เล็กลงมากขึ้น ) = การค้นหาค่า ( ใหม่_ค่า1, ใหม่_ค่า2 ) ;
พิมพ์ฉ ( 'จำนวนที่มากกว่าคือ %d และ '
'จำนวนที่น้อยกว่าคือ %d' ,
ยิ่งใหญ่กว่าเล็กกว่า ) ;
กลับ 0 ;
}

เอาท์พุต : :

ตัวเลขที่เราเพิ่มลงในโค้ดของเราจะแสดงค่าที่มากขึ้นและน้อยลงพร้อมกัน ด้วยวิธีนี้ เราสามารถคืนค่าหลายค่าในโค้ดของเราได้อย่างง่ายดาย

บทสรุป

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