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所存储的数据不会默认排序,是无序的。

优点是查找速度极快,更加高效,可以用来卡常。

posted @ 2024-07-04 12:01  Aapwp  阅读(17)  评论(0编辑  收藏  举报
我给你一个没有信仰的人的忠诚