使用地图对大数据进行计数
using maps to count large data
我无法让它处理大文件。我从使用数组改为使用地图,因为这可能会有所帮助。任何建议不胜感激。
map<char,int> freq;
size_t size = 0;
for (char c; cin.get(c); size++){
if (isalpha(c))
freq[tolower(c)]++;
}
cout << "char" << freq['a'] << endl;
由于标准char
只有八位,因此使用整个地图是相当浪费的。声明一个 256 int
s 的数组,将char
变成unsigned
,并以可以想象的最快方式计算频率:
int freq[256];
size_t size = 0;
// Count without any checks or conditions
for (char c ; cin.get(c) ; size++) {
freq[(unsigned char)c]++;
}
// Go through the lowercase letters, and add upper frequencies to them
for (int i = 'a' ; i <= 'z' ; i++) {
freq[i] += freq[toupper(i)];
cout << (char)i << " --> " << freq[i] << endl;
}
相关文章:
- 我应该为地图使用哪种数据结构?(C++)
- C++ - 将数据插入到地图循环的地图中
- 标准地图如何知道使用标准字符串的数据作为键
- C++,如何从文件中读取数据并插入容器:地图
- 如何传递私有地图和输入数据
- 使用什么数据结构来存储基于游戏对象的二维单元地图?
- 从文件中读取数据并插入到地图C++中
- 将数据存储到地图
- 将数据读入地图时出现问题
- 地图数据结构在 Main 中不显示保存的条目.cpp
- 合成地图:从另一个地图获取数据
- 了解如何使用SFML函数将数据添加到地图中
- 优化地图数据结构的地图
- 使用地图对大数据进行计数
- 有没有办法从点云和深度数据构建和存储3D地图
- 分割故障(核心倾倒)在使用地图存储有序数据时
- EIGEN地图 - 它是否占数据指针的所有权
- 如何以不同的数据类型作为值实现地图
- 最易读(代码术语)的方式,用 C++03 中的构造数据填充地图<字符串、字符串>
- C++中的地图数据结构是什么