我有以下問題 - 我想要計算文件中每個單詞的出現次數。我使用的是map<string,Count>
所以關鍵是代表字的字符串對象,並正在擡頭的價值在於保持弦數,因此對象:使用插入增加地圖中的值C++
class Count {
int i;
public:
Count() : i(0) {}
void operator++(int) { i++; } // Post-increment
int& val() { return i; }
};
的問題是,我想用insert()
而不是operator[]
。這是代碼。
typedef map<string, Count> WordMap;
typedef WordMap::iterator WMIter;
int main() {
ifstream in("D://C++ projects//ReadF.txt");
WordMap wordmap;
string word;
WMIter it;
while (in >> word){
// wordmap[word]++; // not that way
if((it= wordmap.find(word)) != wordmap.end()){ //if the word already exists
wordmap.insert(make_pair(word, (*it).second++); // how do I increment the value ?
}else{
...
}
for (WMIter w = wordmap.begin();
w != wordmap.end(); w++)
cout << (*w).first << ": "
<< (*w).second.val() << endl;
}
這有什麼錯用'的std ::地圖<字符串,std :: size_t>'和'wordmap [word] ++;'? – NathanOliver
@NathanOliver我正在做一些練習,我必須用'insert()'來完成。無論如何,下面的答案對我來說很清楚。 – yooo123
如果該值已經存在,'insert'不會插入任何內容。 –