第6关:STL模板之键值对容器实例:基于map统计26个字母出现频率
时间: 2024-03-01 21:49:59 浏览: 93
好的,让我们来解决这个问题。
这个问题可以通过使用 STL 中的 map 容器来解决。map 是一个关联容器,它存储一组键值对,并且可以根据键快速查找对应的值。我们可以使用 map 来统计每个字母出现的频率。
以下是一个简单的实现:
```cpp
#include <iostream>
#include <map>
#include <string>
int main() {
std::string s = "Hello, world!";
std::map<char, int> freq;
for (char c : s) {
if (isalpha(c)) {
freq[tolower(c)]++;
}
}
for (char c = 'a'; c <= 'z'; c++) {
std::cout << c << ": " << freq[c] << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先定义了一个字符串 s 和一个空的 map 容器 freq。然后,我们遍历字符串中的每个字符,如果该字符是字母,我们就将其转换成小写字母,并将其对应的计数器加一。最后,我们遍历所有字母,并输出它们的计数器值。
这个程序的输出应该是:
```
a: 0
b: 0
c: 0
d: 1
e: 1
f: 0
g: 0
h: 1
i: 0
j: 0
k: 0
l: 3
m: 0
n: 0
o: 2
p: 0
q: 0
r: 1
s: 0
t: 0
u: 0
v: 0
w: 1
x: 0
y: 0
z: 0
```
这个程序可以统计任何字符串中每个字母出现的频率。只需要将字符串 s 替换成你要统计的字符串即可。
阅读全文