C++面向对象程序设计学习笔记(10)

vector list queue stack deque priority_queue

vector

向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
定义一般形式

vector<数据类型>定义名字

头文件 #include <vector>

操作

1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据

list

Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.
定义一般形式

list<数据类型>定义名字

头文件 #include <list>

操作

assign() 给list赋值 
back() 返回最后一个元素 
begin() 返回指向第一个元素的迭代器 
clear() 删除所有元素 
empty() 如果list是空的则返回true 
end() 返回末尾的迭代器 
erase() 删除一个元素 
front() 返回第一个元素 
get_allocator() 返回list的配置器 
insert() 插入一个元素到list中 
max_size() 返回list能容纳的最大元素数量 
merge() 合并两个list 
pop_back() 删除最后一个元素 
pop_front() 删除第一个元素 
push_back() 在list的末尾添加一个元素 
push_front() 在list的头部添加一个元素 
rbegin() 返回指向第一个元素的逆向迭代器 
remove() 从list删除元素 
remove_if() 按指定条件删除元素 
rend() 指向list末尾的逆向迭代器 
resize() 改变list的大小 
reverse() 把list的元素倒转 
size() 返回list中的元素个数 
sort() 给list排序 
splice() 合并两个list 
swap() 交换两个list 
unique() 删除list中重复的元素

queue

即队列,只能从队尾插入元素,从队首删除元素
定义一般形式

queue<数据类型>定义名字

头文件 #include <queue>

操作

push(x) 将x压入队列的末端
pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
front() 返回第一个元素(队顶元素)
back() 返回最后被压入的元素(队尾元素)
empty() 当队列为空时,返回true
size() 返回队列的长度

stack

即栈,只能从队尾插入元素,从队尾删除元素
定义一般形式

stack<数据类型>定义名字

头文件 #include <stack>

操作

empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素

deque

deque(双端队列)是由一段一段的定量连续空间构成,可以向两端发展,因此不论在尾部或头部安插元素都十分迅速。 在中间部分安插元素则比较费时,因为必须移动其它元素。
定义一般形式

deque<数据类型>定义名字

头文件 #include <deque>

操作

size();  容器大小
max_size(); 容器最大容量
resize();    更改容器大小
empty();    容器判空
shrink_to_fit();    减少容器大小到满足元素所占存储空间的大小
push_front(const T& x);    头部添加元素
push_back(const T& x);    末尾添加元素
insert(iterator it, const T& x);    任意位置插入一个元素
insert(iterator it, int n, const T& x);    任意位置插入 n 个相同元素
insert(iterator it, iterator first, iterator last);    插入另一个向量的 [forst,last] 间的数据
pop_front();    头部删除元素
pop_back();    末尾删除元素
erase(iterator it);    任意位置删除一个元素
erase(iterator first, iterator last);    删除 [first,last] 之间的元素
clear();    清空所有元素
deq[1];     下标访问,并不会检查是否越界
at(1);     at 方法访问以上两者的区别就是 at 会检查是否越界,是则抛出 out of range 异常
front();    访问第一个元素
back();    访问最后一个元素
assign(int nSize, const T& x);    多个元素赋值,类似于初始化时用数组进行赋值
swap(deque&);    交换两个同类型容器的元素
begin();    开始迭代器指针
end();     末尾迭代器指针,指向最后一个元素的下一个位置
cbegin();     指向常量的开始迭代器指针,意思就是不能通过这个指针来修改所指的内容,但还是可以通过其他方式修改的,而且指针也是可以移动的。
deq.cend();    指向常量的末尾迭代器指针
rbegin();    反向迭代器指针,指向最后一个元素
rend();    反向迭代器指针,指向第一个元素的前一个元素

priority_queue

优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。元素的比较规则默认按元素值由大到小排序,可以重载“<”操作符来重新定义比较规则。  
定义一般形式

priority_queue<数据类型>定义名字

头文件 #include <queue>

操作

empty() 如果队列为空返回真
pop() 删除队顶元素
push() 加入一个元素
size() 返回优先队列中拥有的元素个数
top() 返回优先队列队顶元素(队列中的front()变成了top())
在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。
posted @ 2019-12-22 20:55  springfield_psk  阅读(168)  评论(0编辑  收藏  举报