2015-11-16 21 views
0

現在我有一個`如何串的多重映射排序爲價值

multimap<size_t, <string>> mymap`; 

它存儲在字的大小鍵入單詞。

我希望能夠抓住所有的單詞,關鍵= 5。然後我想使用該密鑰值從最低到最高的字符串進行排序。

我將如何做到這一點,是一個多重映射的最有效方法是什麼? 我的意思是有可能使用不同的容器,我可以通過字符串值對它們進行排序,還可以通過鍵值對它們進行分類?

基本上我有其中第一元件必須不能移動的載體。但其他矢量應按字母順序組織。我將如何做到這一點?然後,我想要再次組織向量,按字母順序使用第一個單詞將它們組織到multimap中。有任何想法嗎?

+1

你的意思是,地圖數據是一個字符串*矢量*? –

+0

你有沒有想過有一個'std :: unordered_map >?這是你可以有字符串組織的大小和存儲字典。 – NathanOliver

回答

1

最有效的方法取決於你將如何使用這個容器。 如果您想要在插入/刪除字符串時對字符串進行排序,那麼最有效的方法是std::unordered_map<std::size_t, set<string> >

但是,如果它可以收集所有數據,然後排序的所有字符串,那麼最有效的方法是使用std::unordered_map<std::size_t, vector<string> >

+0

我有一個向量,第一個元素不能移動。但其他矢量應按字母順序組織。我將如何做到這一點? 然後,我會想按字母順序使用第一個單詞組織矢量,以便在multimap中組織它們。有任何想法嗎? – Mkey

+0

關於第一點。您只能對矢量的一部分進行排序(從vec.begin()+ 1開始),但請不要忘記檢查大小。關於第二點,我不確定我的理解是什麼意思。 – metal4people

+0

這實際上是一個完美的答案,並幫助我弄清楚了。我會很快發佈我的解決方案:) – Mkey