เหตุใดจึงดูเหมือนไม่มีใครใช้ tuples ใน C ++ ทั้งBoost Tuple Libraryหรือไลบรารีมาตรฐานสำหรับ TR1 ฉันอ่านโค้ด C ++ มาเยอะแล้วและไม่ค่อยเห็นการใช้ทูเปิล แต่ฉันมักจะเห็นสถานที่มากมายที่ทูเปิลสามารถแก้ปัญหาต่างๆได้ (โดยปกติจะคืนค่าหลายค่าจากฟังก์ชัน)
Tuples ช่วยให้คุณทำสิ่งดีๆได้ทุกประเภทเช่นนี้:
tie(a,b) = make_tuple(b,a); //swap a and b
ที่ดีกว่านี้อย่างแน่นอน:
temp=a;
a=b;
b=temp;
แน่นอนคุณสามารถทำได้เสมอ:
swap(a,b);
แต่ถ้าคุณต้องการหมุนสามค่าล่ะ? คุณสามารถทำสิ่งนี้ได้ด้วยสิ่งทอ:
tie(a,b,c) = make_tuple(b,c,a);
Tuples ยังช่วยให้สามารถส่งคืนตัวแปรหลายตัวจากฟังก์ชันได้ง่ายกว่ามากซึ่งอาจเป็นกรณีที่พบได้บ่อยกว่าการแลกเปลี่ยนค่า การใช้การอ้างอิงเพื่อส่งกลับค่าเป็นสิ่งที่ไม่สวยงามอย่างแน่นอน
มีข้อบกพร่องใหญ่ ๆ สำหรับสิ่งที่ฉันไม่ได้นึกถึงหรือไม่? ถ้าไม่เป็นเช่นนั้นทำไมพวกเขาจึงไม่ค่อยใช้? ช้ากว่าไหม หรือว่าแค่คนไม่ชิน? เป็นความคิดที่ดีที่จะใช้ tuples หรือไม่?
a = a ^ b; b = a ^ b; a = a ^ b;