c++stlのmap(テーマとまとめ)
前言:c++stl机能は非常に强力で、mapはその中の1つの机能の非常に强力な容器で、多くそれを磨いて(どうしてこの话を书いてとてもXを诘めます)、疫病はあまりにも深刻で、すべて外出する勇気がなくて、家で楽しく(tong)速く(ku)问题を涂るしかありません
一、map用法まとめ
1.visというmapコンテナ(int,int)タイプを定義する
2.itという名前の反復器(int,int)タイプを定義する反復器は、配列の下付き文字に似たものです
vis.begin()は最初の反復器、visを返します.end()は最後の反復器の後のセットの遍歴方法を返す
3.iterという名前の反復器(int,int)タイプを定義する
vis.rbegin()は逆反復器の最初の(順反復器の最後の)visを返す.rend()は、逆反復器の最後の後の(順方向反復器の最初の前の)遍歴方法を返します.
4.map容器を空にして、これはqueueのようで、stackはすべてありません
5.反復器で対応するキー(key)と値(value)のキー値のペアを返します.vis[key]=value
6.find関数:戻りキー(key)に対応する反復器
7.erase削除
8.size()これはすべてのコンテナがあるようで、mapにマッピングされた回数を返します
9.2 D配列を定義するmap
2 D配列をキーにすることができます
10.結合が構造体であるmap
二、テーマのまとめ
CF4C Registration system
方法1:
mapを開いて、キーは文字列を保存して、値は文字列を保存して何番目の入力で、更に1つの配列を開きます
検索文字列はmapにありません.もし、文字列を保存してOKを出力します.いなければ位置対応配列の値+1となり、文字列と対応配列の値が出力される
方法2:
キーメモリ文字列、値メモリ文字列出現回数、見つからない場合は直接出力OKを併存し、直接出力キー値ペアを見つけて値+1
一、map用法まとめ
1.visというmapコンテナ(int,int)タイプを定義する
map<int,int>vis;
2.itという名前の反復器(int,int)タイプを定義する反復器は、配列の下付き文字に似たものです
map<int,int>::iterator it;
vis.begin()は最初の反復器、visを返します.end()は最後の反復器の後のセットの遍歴方法を返す
for(it=vis.begin();it!=vis.end();it++)
3.iterという名前の反復器(int,int)タイプを定義する
map<int,int>::reverse_iterator iter;
vis.rbegin()は逆反復器の最初の(順反復器の最後の)visを返す.rend()は、逆反復器の最後の後の(順方向反復器の最初の前の)遍歴方法を返します.
for(iter=vis.rbegin();iter!=vis.rend();iter++)
4.map容器を空にして、これはqueueのようで、stackはすべてありません
vis.clear();
5.反復器で対応するキー(key)と値(value)のキー値のペアを返します.vis[key]=value
map<int,int>vis;
map<int,int>::iterator it;
it=vis.begin()
it->first;//
it->second;//
6.find関数:戻りキー(key)に対応する反復器
map<int,int>::iterator it;
it=find(key);
7.erase削除
vis.erase(it);//it
vis.erase(key);//key
8.size()これはすべてのコンテナがあるようで、mapにマッピングされた回数を返します
int cnt=vis.size();
9.2 D配列を定義するmap
map<ll,map<ll,int> >vis;
2 D配列をキーにすることができます
10.結合が構造体であるmap
#include
using namespace std;
pair<int,int>p;
map<pair<string,int>,int >vis;
int x,y,n;
string s;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>s>>y;
vis[{s,y}]++;
}
map<pair<string,int>,int >::iterator it;
for(it=vis.begin();it!=vis.end();it++)
{
printf("%s %d %d
",it->first.first.c_str(),it->first.second,it->second);
}
return 0;
}
二、テーマのまとめ
CF4C Registration system
方法1:
mapを開いて、キーは文字列を保存して、値は文字列を保存して何番目の入力で、更に1つの配列を開きます
検索文字列はmapにありません.もし、文字列を保存してOKを出力します.いなければ位置対応配列の値+1となり、文字列と対応配列の値が出力される
#include
using namespace std;
typedef unsigned long long ll;
map<string,int>m;
int co[100005];
int main()//
{
int n;
string str;
cin>>n;
map<string,int>::iterator it;
for(int i=1;i<=n;i++)
{
cin>>str;
it=m.find(str);// str
if(it==m.end())//
{
m[str]=i;//
cout<<"OK"<<endl;
}
else//
{
int t=it->second;//t str ,
cout<<str<<++co[t]<<endl;
}
}
return 0;
}
方法2:
キーメモリ文字列、値メモリ文字列出現回数、見つからない場合は直接出力OKを併存し、直接出力キー値ペアを見つけて値+1
#include
using namespace std;
typedef unsigned long long ll;
map<string,int>m;
int co[100005];
int main()//
{
int n;
string str;
cin>>n;
map<string,int>::iterator it;
for(int i=1;i<=n;i++)
{
cin>>str;
it=m.find(str);// str
if(it==m.end())//
{
m[str]=1;//
cout<<"OK"<<endl;
}
else//
{
cout<<str<<m[str]++<<endl;// —— —— +1
}
}
return 0;
}