1.Maps
1. map<string,int>m; 创建
2. int length=m.size(); 容器中元素个数
3. m.insert(make_pair("hello",9)); 插入,pair被插入到映射中,其中的键是“hello”,与之关联的值是9
4. m.erase(val); 删除
5. m.find(val); 返回
6. m.clear(); 清空容器中所有映射
7. m.erase(first,last); 删除迭代器在[first,last)范围内的映射
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<iostream>
using namespace std;
int main()
{
int t,x,mark;
string name;
map<string,int>m;
scanf("%d",&t);
while(t--)
{
cin>>x>>name;
if(x==1)
{
cin>>mark;
m[name]=m[name]+mark;
}
else if(x==2)
m.erase(name);
else
cout<<m[name]<<endl;
}
}
2.Sets
8. set<int>s;
9. int length=s.size();
10. s.insert(x); 插入
11. s.erase(val); 清除
12. s.find(); 返回
13. s.clear();
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int>s;
int t,x,y;
cin>>t;
while(t--)
{
cin>>x>>y;
if(x==1)
s.insert(y);
else if(x==2)
s.erase(y);
else
{
if(s.find(y)!=s.end())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
}
3.Vector
1. vector<int>v; 创建一个向量容器
2. int size=v.size(); 容器中元素个数
3. v.push_back(x); 在v的最后一个向量后插入x
4. v.pop_back(); 删除v中最后一个元素
5. sort(v.begin(),v.end()); 排序(从小到大)
reverse(obj.begin(),obj.end()); (从大到小)
6. v.clear(); 清除容器中所有数据
Sample Input
5
1 6 10 8 4
实例:
Sample Output
1 4 6 8 10
Source code
#include<bits/c++.h>
#include<vector>
using namespace std;
int main()
{
vector<long long>v;
long long i,n,x;
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
v.push_back(x);
}
sort(v.begin(),v.end());//排序
for(i=0;i<n;i++)
cout<<v[i]<<" ";
cout<<endl;
return 0;
}
4.lower_bound:
lower_bound:
功能:查找非递减序列[first,last) 内第一个大于或等于某个元素的位置。
返回值:如果找到返回找到元素的地址否则返回last的地址。
用法:int t=lower_bound(a+l,a+r,key)-a;(a是数组)。
upper_bound:
功能:查找非递减序列[first,last) 内第一个大于某个元素的位置。
返回值:如果找到返回找到元素的地址否则返回last的地址。
用法:int t=upper_bound(a+l,a+r,key)-a;(a是数组)。
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,m;
cin>>n;
vector<int>v;
while(n--)
{
int x;
cin>>x;
v.push_back(x);
}
cin>>m;
vector<int>::iterator low,up;
while(m--)
{
int y;
cin>>y;
low=lower_bound(v.begin(),v.end(),y);
up=upper_bound(v.begin(),v.end(),y);
if(up-low!=0)
cout<<"Yes "<<low-v.begin()+1<<endl;
else
cout<<"No "<< low-v.begin()+1<<endl;
}
}