Mengapa tampaknya tidak ada yang menggunakan tupel di C ++, baik Perpustakaan Boost Tuple atau perpustakaan standar untuk TR1? Saya telah membaca banyak kode C ++, dan sangat jarang saya melihat penggunaan tupel, tetapi saya sering melihat banyak tempat di mana tupel akan memecahkan banyak masalah (biasanya mengembalikan banyak nilai dari fungsi).
Tuple memungkinkan Anda melakukan semua jenis hal keren seperti ini:
tie(a,b) = make_tuple(b,a); //swap a and b
Itu pasti lebih baik dari ini:
temp=a;
a=b;
b=temp;
Tentu saja Anda selalu bisa melakukan ini:
swap(a,b);
Tetapi bagaimana jika Anda ingin merotasi tiga nilai? Anda dapat melakukan ini dengan tupel:
tie(a,b,c) = make_tuple(b,c,a);
Tupel juga mempermudah pengembalian beberapa variabel dari suatu fungsi, yang mungkin merupakan kasus yang jauh lebih umum daripada menukar nilai. Menggunakan referensi untuk mengembalikan nilai tentu tidak terlalu elegan.
Apakah ada kekurangan besar pada tupel yang tidak saya pikirkan? Jika tidak, mengapa jarang digunakan? Apakah mereka lebih lambat? Atau hanya karena orang tidak terbiasa dengan mereka? Apakah ide yang bagus untuk menggunakan tupel?
a = a ^ b; b = a ^ b; a = a ^ b;