2010-05-18 30 views

回答

27

一些用例:

多重映射

  • 隨着郵政編碼爲關鍵,所有的人都該有郵政編碼
  • 使用帳戶ID爲關鍵,這個人的所有未結訂單/ account
  • 一本字典,每個關鍵詞有各種解釋

multiset

本質上是一個帶有鍵和整數計數的映射。

  • 商店的庫存,所有產品都有自己的重點和金額 仍然可以是
  • 積累了店鋪的銷售數據,每次價值產品銷售 產品ID獲取的加入從而增加銷售數量
1

http://www.cplusplus.com/reference/stl/multimap/

地圖是一種締合的 容器,其存儲由一個密鑰值和 映射值的組合形成 元件,很像地圖 容器,但允許不同的 元件具有相同的關鍵值。

這是一種註冊表,元素可以共享密鑰。你可以想到公司和員工。街道地址是關鍵,員工是價值觀。

0

這裏是Wikipedia說,關於用途:

  • 在學生入學制度,學生可以同時 多個類進行註冊,有 可能是在每個 入學學生的協會一個課程, 其中關鍵是學生ID和 的值是課程ID。如果一個 學生註冊三門課程, 將有三個協會 包含相同的密鑰。
  • 一本書的索引可以對於給定的索引 術語報告任何數量的引用的,並且因此可以被編碼爲從索引詞一個 多重映射到任何 的參考位置
+3

你可以給任何multiset的例子 – 2010-10-14 15:39:08

2

一個實例數如果你的情況大多數情況下這些密鑰是唯一的,但有時它們不是這種情況,那麼multimap會很有用。

例如,如果您正在創建一個使用散列作爲關鍵字的緩存類。大多數情況下,兩個不同的對象不會有相同的散列,因此這些鍵將是唯一的。但有可能你會得到不同對象的散列衝突,所以你需要一個multimap來覆蓋這種情況。

另一個例子是任何類型的非唯一索引(如在數據庫中)。

至於multiset - 我認爲這些將不太有用。我唯一能想到的就是將它用作一種自動排序的列表。

2

multiset或multimap僅適用於可能存在多個特定項目的情況。例如,假設您想爲圖書創建索引。你會掃描文本,扔掉所有真正常見的毫無意義的單詞(「a」,「an」,「the」等),然後列出所有其餘的單子,發生。

相當多的單詞會出現在多個頁面上,在這種情況下,您將有多個條目從一個單詞映射到不同的頁面。處理這種情況的一種方法是從單詞到頁碼的多圖。

0

使用multimap,無論您想使用何種樹結構類型。

+2

[這個答案被自動標記爲「一個老問題的遲到答案,由新用戶提供,這個評論是在這種情況下。或者有任何研究價值,因此請考慮擴大答案或完全刪除答案,謝謝! – danfuzz 2012-11-05 23:11:31

0

在矢量/列表(或任何其他容器)上使用multiset最重要的好處是查找操作的時間複雜度。 multiset的平均案例時間複雜度爲O(logn),而unordered_multiset爲O(1)。 multimap和ordered_multimap同樣如此。