c++mapインデックスが存在しないkeyによる結果分析
今日はこれを長く調整してやっとこの問題を発見しました。だから以下のように記録します。
テストコード
通常の索引
1 10
abc xzy
a b
存在しないキーにアクセス
0
変化
1 10
2 0
abc xzy
def
a b
c
存在しないkeyはインデックスされた後にmapに追加され、デフォルト値(一般的には整数は0、文字列は空)が付与されていることが分かります。
注意したいのは、インデックスが発生すると、上記のようなエラーが発生します。たとえif文でも
これらのキーをもう一回使いたいと間違えます。実際には存在しないキーを使います。
避ける方法は、インデックスの前にfindまたはcountを使ってキーがあるかどうかを判断することです。
ここでは、c+mapインデックスが存在しないkeyの結果を分析する記事を紹介します。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;
}
アウト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;
}
上のコードは同じ結果を生みます。これらのキーをもう一回使いたいと間違えます。実際には存在しないキーを使います。
避ける方法は、インデックスの前にfindまたはcountを使ってキーがあるかどうかを判断することです。
ここでは、c+mapインデックスが存在しないkeyの結果を分析する記事を紹介します。c+mapインデックスの内容については、以前の記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。