您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關c++ 中map索引不存在如何解決,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
測試代碼
#include<bits/stdc++.h> using namespace std; int main() { map<int,int>mp_int; map<string,string>mp_string; map<char,char>mp_char; mp_int[1]=10; string a="abc",b="xzy",c="def"; mp_string[a]=b; mp_char['a']='b'; cout<<"正常索引"<<endl; for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl; cout<<"訪問不存在的鍵"<<endl; cout<<mp_int[2]<<endl<<mp_string[c]<<endl<<mp_char['c']<<endl; cout<<"變化"<<endl; for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl; return 0; }
OUT PUT
正常索引
1 10
abc xzy
a b
訪問不存在的鍵
0
變化
1 10
2 0
abc xzy
def
a b
c
可以發現不存在的key在被索引后被添加到了map中并被賦予了一個默認值(一般的,整數為0,字符,字符串為空)
需要注意的是,只要發生了索引,就會導致如上錯誤,即使他們在if語句里
#include<bits/stdc++.h> using namespace std; int main() { map<int,int>mp_int; map<string,string>mp_string; map<char,char>mp_char; mp_int[1]=10; string a="abc",b="xzy",c="def"; mp_string[a]=b; mp_char['a']='b'; cout<<"正常索引"<<endl; for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl; cout<<"訪問不存在的鍵"<<endl; if(mp_int[2]); if(mp_string[c]==a); if(mp_char['c']); cout<<"變化"<<endl; for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl; for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl; return 0; }
上面的代碼會產生同樣的結果
當你想要再次使用(循環)這些鍵的時候就會出錯,你會使用到實際并不存在的key
避免方法是在索引前使用find或者count來判斷鍵是否存在
看完上述內容,你們對c++ 中map索引不存在如何解決有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。