1.map
map可以任意定义 一一对应
比如map<string,int> string便是种类 ,int是string对应的
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。
map<string,int>::iterator w=s.find(a);
printf("%d\n",w->second);
// printf("%d\n",s[a]);
比如w->second表示的就是这个string关键字的值
2.set
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
set<int>s;
int main()
{
int i,j,k,m,n,t,h;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
scanf("%d",&m);
if(n==1)
s.insert(m);//插入一个数据m
if(n==2)
s.erase(m);//删除m
if(n==3)
{
// h=s.find(m);
if(s.find(m)!=s.end())//如果找不到m 那m就等于 end的值 好像是一个特别大的值
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
vector
我们定义一个vectorvik; 相当于定义一个一维数组 ;
vectorvik[1001];则相当于定义一个二维数组 起到了与邻接表相同的作用 ,
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<int>s;
int main()
{
int i,j,k,m,n,t;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d",&n);
s.push_back(n);//插入一个数据n
}
sort(s.begin(),s.end());//从头到尾排个序 从小到大
for(i=0;i<s.size();i++)
{
// int h=s.top();
printf("%d ",s[i]);
}
return 0;
}
删除数据
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,m,b,i;
scanf("%d",&n);
vector<int>s(n);
for(i=0; i<n; i++)
scanf("%d",&s[i]);
scanf("%d",&m);
// printf("*** %d\n",m);
scanf("%d%d",&a,&b);
s.erase(s.begin()+m-1);//删除第m个数
s.erase(s.begin()+a-1,s.begin()+b-1);//删除a到b之间的数
printf("%d\n",s.size());
for(int i=0; i<s.size(); i++)
printf("%d ",s[i]);
}
string
#include<string>
string a;
相当于char a【10010】
但是string只能用cout输出 且string可以之间判断
比如 if(string(a)=="end")
这样使用可以不用strcmp
而且a.size()表示字符串的长度 可以用sort排序
#include<bits/stdc++.h>
using namespace std;
string a[1000];
bool cmp(string a,string b)
{
return a.size()<b.size();
}
int main()
{
int i,n;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,cmp);
for(i=1;i<n;i++)
{
if(a[i].find(a[i-1])==a[i].npos)
{
printf("NO");
return 0;
}
}
printf("YES\n");
for(i=0;i<n;i++)
cout << a[i] <<endl;
}