map

`
include<bits/stdc++.h>
using namespace std;
int n;
map<int,int>mp;
int main(){
cin >> n;
vector
for(int i=0;i<n;i++){
cin >> v[i];
mp[v[i]]++;
}
int count=0;
for(int i=0;i<n;i++){
v[i]+=9;
mp[v[i]]++;
if(mp[v[i]]!=1) count++;
}
cout << n-count;
return 0;
}
`
map是C++STL的一个容器,提供一对一的映射关系
第一个称为关键字“key”,别名是first
第二个称为关键字的价值“value”,别名是second
map<int,int>mp;
map<string,string>mp;
map<char,int>mp;
map<int,string>mp;
map<float,int>mp;
map<double,long>mp;
map<person,int>mp;
map使用:
1.
map<char,int>mp; mp.insert('a',1); mp.insert('b',1); mp['a']++; mp['c']++;
2.插入元素
map<int,string>mp; 方式一:用insert函数插入一个pair mp.insert(pair<int,string>(0,"zhangsan")); 方式二:用insert函数插入value_type数据 mp.insert(map<int,string>::value_type(1,"lisi")); 方式三:用类似数组的方式增加元素(!!!key是int或类似int;不等于数组,key可以为负数) mp[123]="wangwu";
3.查找元素
find()返回一个迭代器,指向查找的元素,找不到则返回map::end()位置(NULL)
`
intr=mp.find(123);
if(iter!=mp.end())
cout << "found,the value is" << iter->second;
else
cout << "not found";
如果关键字是整型,也可以通过名片[1]读取关键字1对应的价值
`
4。几种引用方法
`
1)
map<int,int>mp1;
int sum=0;
mp1[10]=3;
sum+=mp1[10];
\sum累加后变为103
2)
map<int,int>mp1;
int sum=100;
sum+=mp1[10];
\mp1不存在key为10,所以mp1返回值为0,sum累加后仍为100
3)
map<int,int>mp1;
mp1[10]=3;
mp1[10]++;
\mp1[10]变为4
map<int,int>mp1;
mp1[20[++;
\mp1增加一个元素<20,1>
`
使用map
1.https://codeforces.com/gym/102897/problem/J
`
include<bits/stdc++.h>
using namespace std;
map<char,int>mp;
int main() {
int t,n,i,j;
cin >> t;
while(t--) {
cin >> n;
int count = 0;
string s;
for (j = 0; j < n; j++) {
mp.clear();
cin >> s;
for (i = 0; i < s.size(); i++) {
if (s[i] != '.' && mp.count(s[i]) == 0) {
count++;
mp[s[i]]++;
}
}
}
cout << count << endl;
}
return 0;
}
该题也可以使用set容器
`
include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
while(n--){
int m;
cin >> m;
int count=0;
while(m--){
string a;
set
** cin >> a;**
** for(char c : a){**
** s.insert(c);**
** }**
** for(char d : s)**{
if(d!='.')
count++;
}
}
cout << count << endl;
}
}
map.clear()清空map保存的数据
map.count()只能返回1或0 1表示存在 0表示不存在
set可以保证存储的单元都是唯一的
对于多元素:从字符串a里面选择不重复的元素进set使用:for(char c:a){set.insert(c);}
从set里面找特定元素:for(char c:set){ }
浙公网安备 33010602011771号