【发布时间】:2016-09-27 07:20:43
【问题描述】:
所以我有这张地图m
typedef pair<int,int>p;
map<string, p> m;
它保存一个文本文件中的所有单词,第一个 int 是单词的频率,第二个是它的第一个字符在文本文件中的位置。这些都是经过计算的,地图工作正常。
但是
我需要将这些单词打印出来,按频率降序排列。我需要位置计数器,因为如果两个单词具有相同的频率,那么文件中第一个出现的单词应该在列表中出现第一个。
如何将此地图转换为矢量?
我试过了
copy(m.begin(), m.end(), back_inserter(wordList));
无济于事
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++
好的,所以我已将 wordList 更改为 vector<pair<string, pair<int, int> > >
我的副本现在可以工作了。谢谢各位
【问题讨论】:
-
什么是
wordlist?您是否收到编译错误或运行时问题?你得到什么错误?我们可以猜测,但如果你告诉我们会更好。 -
它已经在地图中按字典顺序排序,将其移动到向量不会神奇地改变顺序。
-
如果
wordList是std::vector<std::pair<std::string, std::pair<int, int> > >,则该副本将起作用。否则你需要做一些工作将地图中的数据映射成可以存储到向量的形式。 -
你真的需要一个向量吗,我认为对于你提出的问题来说,构造一个频率到单词的 std::multimap 会更好。
-
道歉。 wordList 是我目前正在尝试使用的向量。它是向量
。它给了我 100 多个关于指针和不同事物的错误,我认为我误用了这些容器。我也需要按数字排序,而不是按字母顺序
标签: c++ dictionary vector