vector
1)v.push_back( a );将元素a插入数组v末尾,并增加数组长度。
2)v.size()返回数组v的长度。
3)v.clear():来清空vector中的元素个数
4)v.resize( n,m):重新定义数组大小为n,新增部分初始为m,m可省略。若原大小大与n,则删除多余信息。
5)vector
6)v.begin():返回数组v的首元素末尾的下一个元素的指针(迭代器)。
7)v.end():返回数组v首元素末尾的下一个元素的指针(迭代器)。类似与空指针,无元素。
8)v.erase(v.begin()+2):将v[2]删除 v.earse(v.begin()+1,v.begin()+3); 将v[1].v[2]删除
9)多维可变数组:vector< vector
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。
c++ stl栈stack的头文件为:
#include
1)stack
2)s.push(a):将元素a压进栈s
3)s.pop():将s的栈顶元素弹出
4)s.top():查询s的栈顶元素
5)s.size():查询s的元素个数
6)s.empty():查询s是否为空
queue是一种容器转换器模板,可使用队列类。在 STL 中主要则是实现了一个先进先出的容器。
c++ stl队列queue的头文件为:
#include< queue>
1)queue
2)q.empty():判断队列是否为空
3)q.size():返回队列长度
4)q.push(a):对于queue,在队尾压入一个新元素a
5)q.front():返回队首元素的值,但不删除该元素
6)q.back():返回队尾元素的值,但不删除该元素
7)q.top():返回具有最高优先级的元素值,但不删除该元素
List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件
#include
定义和初始化
list
list
list
list
list
常用操作函数
list
list
it++;it-- ;迭代器指向前一个和后一个元素
a.insert(it,x) ;在迭代器it的前插入元素x
a.erase(it) ;删除it指针(迭代器)的元素
for(it=a.begin();it!=a.end();i++) 遍历链表
a.pop_back() ;删除最后一个元素
a.pop_front() ;删除第一个元素
a.push_back(x) 在list的末尾添加一个元素 x
a.push_front(x) 在list的头部添加一个元素 x
a.front() ;返回第一个元素
a.begin() ;返回指向第一个元素的迭代器
a.end() ;返回末尾的迭代器
a.clear() ;删除所有元素
a.empty() ;如果list是空的则返回true
set的本质是红黑树(一种比较优秀的平衡二叉树)
注意:
1、set中的元素都是排好序的
2、set集合中没有重复的元素
set <int> ds; //建立一个名字叫ds的,元素类型为int的集合
begin(); // 返回指向第一个元素的迭代器
end(); // 返回指向迭代器的最末尾处(即最后一个元素的下一个位置)
clear(); // 清除所有元素
empty(); // 如果集合为空,返回true,否则返回false
erase(x); //删除集合中的x元素,否则什么都不干
erase(it); //删除集合中地址it的元素
size(); //集合中元素的数目
find(); //返回一个指向被查找到元素的迭代器
insert(x); //在集合中插入元素x,如果元素已经存在则什么都不做
lower_bound(); //返回指向大于(或等于)某值的第一个元素的迭代器
upper_bound(); //返回大于某个值元素的迭代器
set <int> ::iterator it;//迭代器it
上文中提到的“地址”实际上是对应元素的迭代器。lower_bound返回的迭代器,可以对其++找到后继元素的迭代器,也可以–找到前继元素的迭代器。需要注意指向元素的迭代器,如果已经是begi(),则不能–,如果是end(),则不能++。
1.map简介
map是STL的一个关联容器,它提供一对一的hash。
map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。
2.map的功能
自动建立key - value的对应。key 和 value可以是任意你需要的类型,包括自定义类型。
3.使用map
#include
map ds;
建立一个名字为ds,下标类型为A,元素类型为B的映射表,例如map
ds[A]=B:就是把数组下标为A的位置值变成B,下标为任意类型
ds[A]:访问这个数组下标为A的元素,比如可以进行cout<
这样就定义了一个用int作为索引,并拥有相关联的指向string的指针.
4.map的基本操作函数:
begin(); //返回指向map头部的迭代器
clear(); //删除所有元素
end(); //反悔映射表中最后一个元素的下一个元素的地址。这个很少直接单独使用,而是配合其他操作,用于确定某个元素的存在
swap(); //交换两个map
find(x); //查询元素x映射表中的地址,不存在则返回end()
empty(); //如果映射表是空的,则返回1,否则返回0
size(); //返回映射表中元素的个数
erase(A); //删除这个“数组”中下标为A的元素。注意:访问使用ds[A]访问数组下标为A的元素时,如果这个下标对应的元素不存在,则自动创建下标为A,值为默认值(例如,所以元素类型默认值是0,string字符串是空字符串)的元素。