std::unordered_map<char, int>
和 vector<int64_t>
在统计字符出现次数。
std::unordered_map<char, int>
更适合于统计字符出现次数这种情况,特别是当字符集较大或字符分布较为稀疏时。而 vector<int64_t>
通常更适用于需要连续访问元素或元素之间存在特定顺序的情况。
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
//打印DNA序列字符的ASCII码
std::string dan_alphabet = "ATGCNatgcn";
for(char c : dan_alphabet){
//方法1:直接将字符强制转换为整数类型
std::cout << "ASCII码(" << c << "): " << static_cast<int>(c) << std::endl;
// 方法2:使用整数类型打印字符的ASCII码
std::cout << "ASCII码(" << c << "): " << int(c) << std::endl;
}
std::string str = "TTAGACGATGCATGACGATGCAGT";
//1. std::vector 实现方式
std::vector<int64_t> char_counts_vec(256, 0);
// c为字符,可以看作整数,当索引号
for(char c : str) char_counts_vec[c]++;
// 输出统计结果
for (char c : "CGAT") {
std::cout << c << std::endl;
std::cout << char_counts_vec[c] << std::endl;
}
std::cout << char_counts_vec['A'] << std::endl;
std::cout << char_counts_vec[65] << std::endl;
// 2. std::unordered_map 实现方式
std::unordered_map<char, int> char_counts_map;
// 统计字符串中各个字符出现的次数
for (char c : str) {
char_counts_map[c]++;
}
// 输出统计结果
std::cout << "Character counts:" << std::endl;
for (const auto& pair : char_counts_map) {
std::cout << "'" << pair.first << "' appears " << pair.second << " times" << std::endl;
}
return 0;
}