gpt4 book ai didi

c++ - 为什么 map 在 C++ 中创建 NULL?

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:20 26 4
gpt4 key购买 nike

我有一个二维字符串 vector

vector<vector<string>> database 

它有以下数据

database[0] -> A C D   (database[0][0] -> A , database[0][1] -> C and so on)  
database[1] -> B C E F
database[2] -> A B C E F
database[3] -> B E
database[4] -> A C F

我正在计算每个 string 的出现次数(在此示例中为每个字符 A、B 等)并将其保存在 map map_c 作为

map<string,int> map_c ;

for(i=0 ; i<database.size() ; i++)
{
for(j=0 ; j<database.at(i).size() ; j++)
{
if(map_c.find(database.at(i).at(j)) != map_c.end())
{
map_c[database[i][j]]++;
}
else
{
map_c[database[i][j]] = 1;
}
}

}

并使用代码打印每个字符串的计数

for(map<string,int>::iterator it = map_c.begin() ; it != map_c.end() ; it++ )
{
cout << it->first << " -> " << it->second << endl;
}

输出 ->

  -> 1
A -> 3
B -> 3
C -> 4
D -> 1
E -> 3
F -> 3

为什么创建了计数为 1 的 NULL key ?

最佳答案

您发布的代码不应生成空(或空格)字符串。这样的字符串可能与您的初始数据一起出现。

无论哪种方式,您填充 map 的代码都可以变得更短:

map<string,int> map_c ;
for(const auto& line: database)
for(const auto& s: line)
++map_c[s];

关于c++ - 为什么 map 在 C++ 中创建 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26140857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com