我正在寻找正确的数据结构来存储输入流中给定类型的字符数,逐个字母。我事先知道字母的大小(大约10),但流将大约1GB。主要标准是快速访问。可以使用适当选择的列表enum
来使事情更清楚,但这是最好的方法吗?C++正确的数据结构
0
A
回答
4
鉴于性能要求,考虑一个布局即在存储器相邻的;从而帮助减少缓存未命中。
有点像;
const std::size_t SIZE = 10;
int count[SIZE] = {};
// or
std::vector<int> count(SIZE, 0);
如果您需要与字符一起将计,那么,“对”可以帮助;
struct Datum {
Datum() : c('\0'), count(0) {}
char c; // assuming the "alphabet" is in the char range
int count;
};
std::vector<Datum> count(SIZE);
Herb Sutter和Bjarne提供一些材料和经验证明,为什么std::vector
应该受到青睐。与往常一样,测量应作出验证性能给你的数据结构,算法和相关数据访问等
+1
'int count [256];'可以避免间接字符串 - >索引。 – Jarod42 2014-11-03 10:47:32
0
一个简单的阵列将最佳工作:
int counters[SIZE_OF_ALPHABET];
0
为了存储你可以尝试让字母编码表和简单的字符数组(char是足以存储的1 10个不同的字符)。像:
map<int, char> m;
m['A'] = 1;
m['B'] = 2;
...
char data[SIZE];
for(int i = 0; i < SIZE; i++){
int ch = read();
data[i] = m[ch];
}
或将2个项目压缩成一个字符。
相关问题
- 1. Firebase中的正确数据结构
- 2. 正确的Firebase数据库结构
- 3. 选择正确的数据结构
- 4. 使用正确的数据结构
- 5. 结构数组打印不正确| C++
- 6. c#中正确的C++结构编组#
- 7. c - 正确释放结构的内存
- 8. C#正确的程序结构
- 9. C数据结构
- 10. 此数据的正确数据库结构是什么?
- 11. C结构到结构的任务 - 在目标结构不正确的值
- 12. C++中的数据结构
- 13. 如何正确释放结构? ANSI C
- 14. “幻想足球”数据库中的结果表的正确数据库结构
- 15. C/C++函数没有正确调用开关结构
- 16. 正确的JavaScript函数结构
- 17. 正确的函数定义结构?
- 18. 正确的数据结构来表示数独谜题?
- 19. 正确的结构创建
- 20. 正确的Java类结构
- 21. 正确的SQL结构
- 22. .NET - 正确的UI结构
- 23. 正确的表结构
- 24. C++数值分析精确的数据结构?
- 25. 如何正确malloc为C的结构数组
- 26. 不反映在C#正确数目的字节结构尺寸
- 27. C++数据结构堆
- 28. 特里数据结构C
- 29. C数据结构错误
- 30. C++数据结构声明
“最好”的方式取决于环境和个人意见。如何处理地图(char值 - >长整数)? – deviantfan 2014-11-03 10:35:12
数据结构的目的是什么?存储数据?处理? – 2014-11-03 10:35:22
连续的int count [10]或者std :: vector count(10,0)'。但我认为这取决于您将使用的算法。 –
Niall
2014-11-03 10:37:03