这里分享的不是如邻接矩阵 邻接表的算法存储,仅仅是一些特殊数据的简易存储,以方便操作
1、map<int,vector<int>> mp
当给出很多串数字,每一串数字都需要单数放一个一维数组里,但是开辟一个二维数组内存又过大,并且不好操作时,可以用map<int,vector<int>> mp 来存储,这样就可以单独操作某一串数了
例如存储:第一列数字是这一串数字的个数(第一关键字),后面是具体的数字
后面是代码的输出结果,因为map会自动按第一关键字排序,所以第二行会先输出
map<int,vector<int>> mp;
for(int i=0;i<3;i++){
int n;
cin>>n;
for(int j=0;j<n;j++){
int x;
cin>>x;
mp[n].push_back(x);
}
}
for(auto t:mp){ //范围for 循环来遍历
for(int i=0;i<t.first;i++){
cout<<t.sd[i]<<" "; //这里就可以是对数组的操作
}
cout<<endl;
}
2、vector<int> vec[N]
这种形式和上面那个的作用是一样的,都是可以单独把一串数字放在一个单独区域里的,相对于二维数组来说会节省空间。输入的还是上面那组数据:
vector<int> vec[3];
for(int i=0;i<3;i++){
int n;
cin>>n;
for(int j=0;j<n;j++){
int x;
cin>>x;
vec[i].push_back(x);
}
}
for(int i=0;i<3;i++){
for(auto t:vec[i]){
cout<<t<<' ';
}
cout<<endl;
}
图示一下结构:
3、pair<int ,int > p[N]
这个在存一对数据的时候很好用,同时可以自由调整关键字排序(map最好不要修改排序规则,会造成错误)输入输出:
pair<int,int> p[3];
for(int i=0;i<3;i++){
int a,b;
cin>>a>>b;
p[i]={a,b}; //这两种形式都可以
p[i]=make_pair(a,b);
}
for(auto t:p){
cout<<t.first<<' '<<t.second<<endl;
}
4、pair的关键字排序
pair可以按任意关键字排序,值得注意的是,当按第一关键字排序,但是第一关键字相等时,可以按第二关键字再排序
bool cmp(const pair<int, int> &a, const pair<int, int> &b)
{
if(a.fr==b.fr) return a.sd < b.sd;
return a.fr > b.fr;
}
这里是按第一关键字从大到小排序,当第一关键字相等时,按第二关键字从小到大排序,只需要修改大于 小于号就能改变排序规则了
5、固定数组(array)
array的大小是固定的,必须在创建时指定。一旦创建,它的 size 不可改变。一般在二进制有关的题目中可以用到,存放每一位二进制的值
array<int,32> bit(n); //固定大小为32的数组
6、set <int>
set就是默认去重的容器,并且默认按升序排序。此时set内只有 1 和 2
set<int> se;
se.insert(1);
se.insert(2);
se.insert(2);
如果需要给数组排序,直接丢进set里效率并不高,此时可以用 unique() 函数去重
vector<int> vec;
vec.erase(unique(vec.begin(), vec.end()), vec.end());
7、当给出三个或四个数据为一组
比如 每一行数据都是 a,b,c,d,可以用 pair<pair<int,int>,pair<int,int>> 这种很集合的方式存,也可以开四个数组 A[n] B[n] C[n] D[n] 来存
pair<pair<int,int>,pair<int,int>> p;
int a=p.first.second; //遍历需要两个关键字
int a[N],b[N],c[N],d[N];
8、字符串存储
char c[100][100];
for(int i=0;i<3;i++) cin>>c[i];
for(int i=0;i<3;i++ ) cout<<c[i]<<endl;
string s[100];
for(int i=0;i<3;i++) cin>>s[i];
for(int i=0;i<3;i++) cout<<s[i]<<endl;
gg,推荐课程:https://xxetb.xetslk.com/s/kNPSd
标签:set,题里,int,C++,关键字,算法,vec,pair,排序 From: https://blog.csdn.net/2301_77671421/article/details/140237354