已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
11天前关闭。
Improve this question
我正在读取一个输入文件,并希望读取所有的字母和符号。我希望从这个文件中创建一些更大的东西,比如最终对它进行编码--但我似乎无法摆脱这个模块,试图读取字符,并在一个向量中使用它的频率,我会在一个堆中运动。对于上下文,我如何才能得到这样的东西:
"I am soo stuck." --> i:1 a:1 m:1 s:2 o:2 t: 1 u:1 c: 1 k:1 :3 (represents spacing)
--我怎么能从最小频率到最大频率排序呢?我试过Map,矢量,对--所有的东西--但是无论我试什么都不管用
1条答案
按热度按时间dgtucam11#
最直接的方法是首先为频率创建一个
std::map
(类似于字典Map,但需要使用std::(unordered)_map<char, int>
而不是<int,char>
),然后使用std::multimap
插入所有反向对。这是因为
std::multimap
按照键的顺序存储它的元素,你可以在godbolt编译器资源管理器上实时使用它。如果你只是碰巧有一个C17之前的编译器,你就不能使用结构化绑定,而需要使用老式的
std::pair
成员。例如,在C14中,第二个循环看起来像这样: