我正在尝试设计一个通过echo接受命令的程序,当用户输入一些字符串时,和-d,程序只打印重复的单词,当它们写-c时,它会打印字符串的频率,在c ++中。
我有频率部分的代码,当我手动执行它时,它适用于频率,但我不理解代码。
int main() {
map<string, int> F; //Stores frequency table
string s; //holds input;
while (cin>> s) F[s]++;
for (map<string, int>::iterator i=F.begin(); i != F.end(); i++){
cout<< (*i).first << ":\t" << (*i).second<< "\n";
}
return 0;
}
上面的代码使用了map,但它有点令人困惑。 我知道.first打印密钥,而.second给出值。但是,我不理解while循环的目的。它需要字符串,比如F [1] = abc,然后它会加一个?这没有用。
至于for循环:迭代器的目的是什么?迭代器就像指针,但为什么它们在这里使用?印刷出来的重点是什么?
答案 0 :(得分:0)
while循环首先用cin读取s,直到它为false,当它返回false时,结束while循环。如果s已经在F中,则将其加1以记录它出现的次数。然后s改变并重复该过程。打印输出* i打印出每个字符串出现的次数。该程序不接缝接受-c或-d进行控制。