【问题标题】:How to sort a multimap of strings as the value如何将字符串的多重映射排序为值
【发布时间】:2015-11-17 00:21:39
【问题描述】:

现在我有一个`

 multimap<size_t, <string>> mymap`; 

它存储以单词大小为关键字的单词。

我希望能够获取 key = 5 的所有单词。然后我想将该键值从最低到最高排序。

我该怎么做?多图是最有效的方法吗? 我的意思是是否可以使用不同的容器,在其中我可以按字符串值对它们进行排序,也可以按键值对它们进行分类?

基本上我有一个向量,其中第一个元素不能移动。但向量的其余部分应按字母顺序组织。我该怎么做?然后,我想组织一次再次排序的向量,按字母顺序仅使用第一个单词在多图中组织它们。有什么想法吗?

【问题讨论】:

  • 你的意思是地图的数据是字符串的vector
  • 你有没有想过拥有一个std::unordered_map&lt;std::size_t, std::set&lt;std::string&gt;&gt;?这是您可以按大小组织字符串并按字典顺序存储。

标签: c++ sorting


【解决方案1】:

最有效的方法取决于您将如何使用此容器。 如果您想在插入/删除字符串时保持它们的排序,那么最有效的方法是std::unordered_map&lt;std::size_t, set&lt;string&gt; &gt;

但是,如果可以收集所有数据,然后对所有字符串进行排序,那么最有效的方法是使用std::unordered_map&lt;std::size_t, vector&lt;string&gt; &gt;

【讨论】:

  • 我有一个向量,其中第一个元素不能移动。但向量的其余部分应按字母顺序组织。我该怎么做?然后,我想使用第一个单词按字母顺序组织向量,以便在多图内组织它们。有什么想法吗?
  • 关于第一点。您只能对向量的一部分进行排序(从 vec.begin() + 1 开始),但是,不要忘记检查大小。关于第二点,我不确定我是否正确理解了您的意思。
  • 这实际上是一个完美的答案,并帮助我弄清楚了。我会尽快发布我的解决方案:)
  • 我很高兴听到这个消息 :)
猜你喜欢
  • 2014-07-14
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多