我保存串的2D矢量作爲爲什麼地圖在C++中創建NULL?
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;
}
}
}
和印刷用t每個串的計他的代碼
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
爲什麼NULL鍵已與數1產生的?
'std :: map'的'[]'將默認構造不在映射中的對象,並且初始化指針和數值爲零,因此您不需要額外的情況來設置'1'值。但猜測你有一個額外的條目,你不期望。 – crashmstr 2014-10-01 12:01:23
也許你的''數據庫'中有空白? – gsamaras 2014-10-01 12:02:29
你確定它是NULL,不只是''(空格)?你確定你的媒介沒有這個空間嗎? – 2014-10-01 12:02:50