對於我的項目,我需要讀入一個文件並計算每個字符出現的時間並將其存儲在鏈接列表中。下面是我在程序的文件部分閱讀: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