编写一个程序,从键盘上输入一个个单词,每接收到一个单词后,输出该单词是否曾经出现过以及出现次数。可以尝试分别用多重集合(multiset)或映射(map)两种途径实现,将二者进行比较。本题答案你可以任意提交一种
时间: 2024-02-12 12:08:45 浏览: 69
好的,我可以帮你编写这个程序。以下是使用 multiset 的实现:
```cpp
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main() {
multiset<string> words;
string word;
while (cin >> word) {
words.insert(word);
int count = words.count(word);
if (count == 1) {
cout << word << " has appeared once." << endl;
} else {
cout << word << " has appeared " << count << " times." << endl;
}
}
return 0;
}
```
以下是使用 map 的实现:
```cpp
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
map<string, int> words;
string word;
while (cin >> word) {
words[word]++;
int count = words[word];
if (count == 1) {
cout << word << " has appeared once." << endl;
} else {
cout << word << " has appeared " << count << " times." << endl;
}
}
return 0;
}
```
两种实现都可以达到同样的效果,输出每个单词出现的次数。multiset 的实现更加简单,因为它已经自动按照字典序进行了排序。map 的实现需要手动对每个单词进行计数,但是它可以用更加直观的方式访问单词的出现次数。
阅读全文