对于我的项目,我需要读入一个文件并计算每个字符出现的时间并将其存储在链接列表中。下面是我在程序的文件部分阅读:C++字符频率链接列表
ifstream inFile;
ofstream outFile;
inFile.open(inputfile.txt);
char ch;
list<charFrequency> charFreqList;
list<charFrequency>::iterator i;
inFile >> ch;
while (!inFile.eof())
{
charFrequency cf(ch);
charFreqList.push_back(cf);
for (i = charFreqList.begin(); i != charFreqList.end(); ++i)
{
if (i->getCharacter() == cf.getCharacter())
{
i->increment();
charFreqList.pop_back();
}
}
inFile >> ch;
}
inFile.close();
我需要的程序办理,如果角色已经在链表,它只是需要增加的计数字符,但只留下列表中的字符的一个实例,但是,我收到一条错误消息,指出“列表迭代器不可实现”。我知道它与pop_back()有关,因为它删除了最后一个元素,但我不知道要避免这个问题。
在此先感谢您的帮助!
一个'的std ::地图'比用链表这样做更容易了一大堆。 –
PaulMcKenzie
2014-10-01 02:57:59
您是否需要使用列表?映射类型更直观,可能会变得更好。 – 2014-10-01 02:59:05
'std :: map CharMap; ... while(!inFile){inFile >> ch; CHARMAP [CH] ++;如果你使用地图,那么这就是你的两个问题的解决方案。一个可怜的2线循环。 –
PaulMcKenzie
2014-10-01 03:02:22