STL
目录: - vector - map - string - pair
前言:
博主在写蓝桥杯算法题目的时候发现大部分时间并不是如何构思算法的设置,大部分时间反而是浪费在了检查数据类型的初始化,以及东拼西凑stl的代码,来完成特定的任务,让博主感到很不舒服。于是决定写一篇stl的使用笔记,方便以后查阅。
数组的初始化问题
C++ 标准要求数组的长度必须是编译期已知的常量表达式 >
例如:int a[10];
是合法的,int a[n];
是不合法的
vector
vector 是连续的顺序的储存结构(和数组一样的类别),但是有长度可变的特性 而且vector是存在堆 不会出现暴栈的情况,因为是动态分配,更节省内存 能提前制定长度就提前制定长度
1 |
|
1 |
|
map
提供对数时间的有序键值对结构。底层原理是红黑树。一个键只会出现一次
map<键类型, 值类型, 比较器> mp 1
2
3
4
5
6
7
8
9
10//初始化
map <int,int> mp;//int->vec 的映射(键从小到大)
map <int, vector <int> ,greater<int> > mp1//int->vec的映射(键从大到小)
//输入匹配,清晰明了
map<int, vector<int> > data;
for(int i=0;i<N;i++){
cin>>value;
cin>>key;
data[key].push_back(value);
}
1 |
|
string
储存字符串的 string末尾没有''
1 |
|
源 | 目的 | 函数 |
---|---|---|
int / long long / float / double / long double | string | to_string() |
string | int | stoi() |
1 |
|
pair
> #include <utility>
在士兵训练问题中思考:为什么map不能替代pair数组?
因为map中一个key只能对应一个value,而pair没有这个要求,同时pair<int,int> arr[N],对其进行排序,先根据first排序再根据second排序
1 |
|