一、vector—向量(变长数组)
解决普通数组超内存的情况
以邻接表的方式存储图
1.vector的定义
#include<vector>
vector<typename> name;
如果typename是一个STL容器,定义时要在> >符号之间加上空格
vector<vector<int> > name
2.vector容器内元素的访问
下标 name[index]
迭代器 (可理解为类似指针的东西)
定义: vector::iterator it
通过*it来访问vector里的元素
vi[i]与(vi.begin()+i)是等价的
begin()是取首元素的地址
end()是取为元素地址 的下一个地址,
end()作为迭代器末尾标志,不存储任何元素。【左闭右开)
3.vector常用函数
(1)push_back()
(2)pop_back()
(3)size()
(4)clear()
(5)insert(it,x):用来向vector任意迭代器it处插入元素x
(6)erase(it)删除单个元素,erase(first,last)【first,last)删除区间元素
4.vector常见用途
(1)存储数据:可变数组;处理最后一个数据后不输出额外空格,用vector保存输出数据,后一次性输出
(2)存储邻接表
二、map的常见用法
map–映射:可以将任何基本类型映射到任何基本类型
1.map定义
#include<map>
map<typename1,typename2> mp;
2.map容器内元素的访问
下标(map中的键是唯一的) 迭代器(it->first访问键,it->second访问值)
map会以键从小到大的顺序自动排列(因为map内部是使用红黑树实现的)
3.map常用函数
(1)find(key)
(2)erase(it)、erase(‘key’)、erase(it,mp.end())-删除区间
(3)size()
(4)clear()
4.map常见用途
(1)映射问题
(2)判断大整数or其他类型数据是否存在
延伸:mulimap、unorder_map
三、pair的常见用法
1.pair的定义
#include<utility>
pair<typename1, typename2> name;
初始化:
(1)pair(string,int)(“haha”,5);
(2)make_pair(“haha”,5);
2.pair中元素的访问
按结构体的方式访问
name.first
name.second
3.pair常用函数
比较操作数:先以first的大小作为标准,只有当first相等时才去判别second的大小
4.用途
(1)代替二元结构体及其构造函数,节省编码时间
(2)作为map键值对来进行插入