我有第二个 C++ 类作业,其中包括马尔可夫链。分配很简单,但我无法弄清楚从文件中读取字符时最好的实现是什么。
我有一个大约 300k 的文件。分配的规则之一是使用 Map 和 Vector 类。在 Map(键只是字符串)中,值将是向量。当我从文件中读取时,我需要开始收集密钥对。
例子:
File1.txt
1234567890
1234567890
如果选择马尔科夫 k=3,我的地图中应该有:
key vector
123 -> 4
456 -> 7
789 -> 0
0/n1 -> 2
234 -> 5
567 -> 8
890 -> /n
/n -> NULL
教授的建议是逐字符读取,所以我的算法如下
while (readchar != EOF){
tempstring += readchar
increment index
if index == Markovlevel {
get nextchar if =!EOF
insert nextchar value in vector
insert tempstring to Map and assign vector
unget char
}
}
我省略了其他一些细节。我的主要问题是,如果我有 318,000 个字符,我每次都会做有条件的,这会大大降低我的电脑速度(全新的 MAC pro)。教授的示例程序在大约 5 秒内执行此文件。
我无法弄清楚从 C++ 文本文件中读取固定长度单词的最佳方法是什么。
谢谢!