我有C++类的第二个任务,其中包括马尔可夫链.赋值很简单但是我无法弄清楚从文件中读取字符时最佳实现是什么.
我有一个大约300k的文件.赋值的一个规则是使用Map和Vector类.在Map中(键只是字符串),值将是Vectors.当我从文件中读取时,我需要开始收集密钥对.
例:
File1.txt
1234567890
1234567890
Run Code Online (Sandbox Code Playgroud)
如果选择Markov k = 3,我应该在我的Map中:
key vector
123 -> 4
456 -> 7
789 -> 0
0/n1 -> 2
234 -> 5
567 -> 8
890 -> /n
/n -> NULL
Run Code Online (Sandbox Code Playgroud)
教授的建议是用char读取char,所以我的算法如下
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
}
}
Run Code Online (Sandbox Code Playgroud)
我省略了一些其他细节.我的主要问题是,如果我有318,000个字符,我每次都会做有条件的,这会大大减慢我的电脑速度(全新的MAC专业版).教授的示例程序在大约5秒内执行该文件.
我无法弄清楚在C++中从文本文件中读取固定长度单词的最佳方法是什么.
谢谢!
| 归档时间: |
|
| 查看次数: |
855 次 |
| 最近记录: |