Tại sao dường như không ai sử dụng bộ dữ liệu trong C ++, Thư viện Boost Tuple hoặc thư viện chuẩn cho TR1? Tôi đã đọc rất nhiều mã C ++ và rất hiếm khi tôi thấy việc sử dụng các bộ dữ liệu, nhưng tôi thường thấy rất nhiều nơi mà các bộ dữ liệu sẽ giải quyết nhiều vấn đề (thường trả về nhiều giá trị từ các hàm).
Tuples cho phép bạn làm tất cả những thứ hay ho như thế này:
tie(a,b) = make_tuple(b,a); //swap a and b
Điều đó chắc chắn tốt hơn thế này:
temp=a;
a=b;
b=temp;
Tất nhiên bạn luôn có thể làm điều này:
swap(a,b);
Nhưng nếu bạn muốn xoay ba giá trị thì sao? Bạn có thể làm điều này với bộ dữ liệu:
tie(a,b,c) = make_tuple(b,c,a);
Tuples cũng làm cho việc trả lại nhiều biến từ một hàm dễ dàng hơn nhiều, đây có thể là trường hợp phổ biến hơn nhiều so với các giá trị tráo đổi. Sử dụng tài liệu tham khảo để trả về giá trị chắc chắn không phải là rất thanh lịch.
Có bất kỳ nhược điểm lớn nào đối với các bộ dữ liệu mà tôi không nghĩ đến không? Nếu không, tại sao chúng hiếm khi được sử dụng? Họ có chậm hơn không? Hay chỉ là mọi người không quen với họ? Nó có phải là một ý tưởng tốt để sử dụng bộ dữ liệu?
a = a ^ b; b = a ^ b; a = a ^ b;