打印频率和重复字符串

时间:2018-04-02 01:09:31

标签: c++

如果我问某人已经问过的话,我道歉。我是初学者,我一直试图找到我理解的清晰资料,但无济于事。

我正在尝试设计一个通过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循环:迭代器的目的是什么?迭代器就像指针,但为什么它们在这里使用?印刷出来的重点是什么?

1 个答案:

答案 0 :(得分:0)

while循环首先用cin读取s,直到它为false,当它返回false时,结束while循环。如果s已经在F中,则将其加1以记录它出现的次数。然后s改变并重复该过程。打印输出* i打印出每个字符串出现的次数。该程序不接缝接受-c或-d进行控制。