Tôi không hiểu tại sao đa phương thức tồn tại nếu chúng ta có thể tạo bản đồ vectơ hoặc bản đồ các tập hợp. Đối với tôi chỉ có sự khác biệt là:Ưu điểm của đa phương thức trên bản đồ vectơ là gì?
- sử dụng
equal_range
trong Multimap để nhận các yếu tố của một chìa khóa và trong bản đồ của vectơ chúng ta chỉ cần sử dụng[]
điều hành và có véc tơ của các yếu tố. - sử dụng
multimap.insert(make_pair(key,value))
trong multimap để thêm các thành phần vàmap_of_vectors[key].push_back(value)
trong bản đồ vectơ.
Vậy tại sao sử dụng multimap? Đối với tôi, tốt hơn là nên có một véc tơ hơn hai vòng lặp để có được tất cả các giá trị của một khóa.
Câu hỏi này cũng áp dụng cho unordered_map của vectơ và unordered_multimap.
Tôi phải thừa nhận rằng tôi chưa bao giờ hiểu mục đích của 'multimap':/ –
Tôi hơi muộn trong câu hỏi nhưng multimap tiêu tốn nhiều bộ nhớ hơn bản đồ vectơ do các con trỏ bổ sung.Lý do duy nhất tôi sử dụng chúng là nếu tôi muốn giữ chìa khóa của mỗi phần tử (làm 'push_back' bạn sẽ không giữ nó) – Jcao02
Multimap là tuyệt vời nếu bạn không chỉ muốn theo dõi các khóa trùng lặp với các giá trị khác nhau, nhưng bạn cũng muốn xóa bất kỳ cặp khóa/giá trị nào tại một thời điểm. Bản đồ các vectơ không phù hợp với điều đó và trong khi bạn có thể sử dụng bản đồ các danh sách, sẽ thuận tiện hơn khi sử dụng một bội số. – richizy