STL汇总
作者学STL学的有点破防,但是STL大法好啊!于是激情开坑。
vector
简单来说就是没有固定大小的数组,可以随着元素的插入和删除进行改变大小。
1.初始化:
基本定义方式为:vector<数据类型名> s;//其中s为数组名
当然也可以使用 s(10)
(即十个元素)以及 s[105]
(即 105 个 vector \(s\)数组,类比二维数组。
2.重要操作:
s.back()
//返回最后一个元素
s.front()
//返回第一个元素
s[i]
//返回第 \(i\) 个元素
s.clear()
//清空
s.empty()
//判断是否为空
s.pop_back()
//删除最后一个元素
s.push_back()
//在最后一个元素后插入一个元素
s.size()
//返回元素个数
s.insert(a.begin()+1,5)
//在 a 的第一个元素(从 0 算起)的位置插入5
s.erase(s.begin()+1,a.begin()+3)
//删除 a 中第一个(从第 0 个算起)到第二个元素,包括开始,不包括结尾。
map
map作为一个关联容器,所存储的元素都是键值对(key-value),并且根据键自动排序,map不允许键重复。且map容器中的每一个元素都是一个 pair 结构的数据。(其实是更加方便的pair<int,int> 数组。
1.初始化
基本定义格式为:map<int,string> a;
,其中int为键类型,值类型为string。
2.重要操作
a.insert(make_pair([],[]))
//使用make_pair 插入元素
a[i]=t
//在键为i的位置插入值t
a.clear()
//清空
a.empty()
//判断是否为空
a.size()
//返回元素个数
map 也可以使用find 和迭代器,如:
//使用find 方法查找键在map中的位置,然后修改其值
auto it=a.find(3);
if(it!=a.end()){//键存在
it->second='';
}
a.erase(5)
//删除指定键的元素
注意:map默认按照键升序进行排序,可以手写函数进行改变。
unordered_map
原理同map,只是umap所存储的数据不会默认排序,是无序的。
优点是查找速度极快,更加高效,可以用来卡常。