1.map.count和map.find
例:map<pair<string,string>,set<string>>res; 定义了一个名为res
的映射(map),其键(key)是一个由两个字符串组成的对(pair),值(value)是一个字符串集合(set)。
res[{ip,name}].insert(a); 这行代码首先创建一个包含ip
和name
的对作为键,然后在对应的集合中插入一个元素a。
res.count({ip,name}) 计算键为{ip, name}
的元素在映射res
中出现的次数。由于映射的键是唯一的,所以这个计数应该要么是0(如果之前没有插入过这个键),要么是1(如果之前已经插入过这个键)。
res[{ip,name}].count(b) 这行代码首先创建一个包含ip
和name
的对作为键,然后在对应的集合中查找元素b
的出现次数。
例:map<string,map<string,ll>> mp;
mp[s1][s2]=1 首先创建一个包含s1
作为键的内部映射,然后在对应的内部映射中插入一个键值对,其中键为s2
,值为1
。
例: typedef struct
{
string s[15];
ll cn;
ll sum;
}st;
map<string,st> mp;
mp[ip].cn=k;
mp[ip].s[i]=user;
for(auto &it:mp) //遍历 mp
中的每一个键值对,将键赋值给 it.first
,将值赋值给 it.second
。
{
cout<<it.first<<" "<<it.second.sum;
for(ll i=0;i<it.second.cn;i++)
{
if(it.second.s[i]!=" ")
cout<<" "<<it.second.s[i];
}
}
例:typedef pair<string,string>pii;
set<pii>st;
st.insert({name,s1}); 将一个由name
和s1
组成的pair
插入到st
中。
例:
typedef pair<long,long> pii;
vector<pii> p;
//for(pii at=make_pair(n-1,m-1);at!=pii{0,0};at=pre[at.fi][at.se])
//for(pii at={n-1,m-1};at!=pii(0,0);at=pre[at.fi][at.se])
//for(auto at=pii(n-1,m-1);at!=pii(0,0);at=pre[at.fi][at.se])
//for(pii at={n-1,m-1};at!=pii{0,0};at=pre[at.fi][at.se])
for(pii at={n-1,m-1};at!=make_pair(0LL,0LL);at=pre[at.fi][at.se])
{
p.push_back(at);
}
如果直接用pii,0可以直接写0,因为pii已经定义为long long
如果用make_pair( ),必须把0换为long long 也就是0LL