博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列式容器:vecor,stack,queue用法
阅读量:4180 次
发布时间:2019-05-26

本文共 1918 字,大约阅读时间需要 6 分钟。

1.序列式容器

c++本身提供了一种序列式容器array,STL提供了vector,list,deque,stack,queue,priority-queue。

2.vector概述

与array相似,array是静态空间,一旦配置了就不能改变,而vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素,它是一个连续线性空间。

支持的操作:

size():元素个数

capacity():实际配置的大小

empty():是否为空

operator[]:随机存取

front():取出第一个元素

back():取出最后一个元素

push_back():将元素插入至最尾端

pop_back():将最尾端元素取出并消除

erase():消除某个位置上的元素

resize():重置大小有两种形式

void resize(size_type new_size,const & x);值全部为x

void resize(size_type new_size);

clear():清除所有的元素

3.list

每次插入和删除一个元素就配置或释放一个元素空间。,它是一个双向链表,提供的是双向迭代器,在尾端加入一个空白节点,成为环状双向链表。

push_front():插入一个节点,作为头节点

push_back():插入一个节点,作为尾节点

erase(iterator position):移除迭代器position所指节点

pop_front():移除头节点

pop_back():移除尾节点

clear():清除所有节点

remove(const T& value):将数值为value之所有元素移除

unique():移除元素相同的连续元素

4.deque

vector是单向开口的连续线性空间,deque是一种双向开口的连续线性空间,可以从头尾分别作元素的插入和删除操作。与vector区别,deque允许以常数时间对头端进行元素的插入和移除,deque没有所谓容量的观念,它是由一段一段的定量连续空间,串接在整个queue的头端和尾端。具有复杂的迭代器结构。

5.stack

是一种先进先出的数据结构,他只有一个出口,只能在最顶端进行元素操作,不允许有遍历行为。以某种既有容器作为底部结构,将其接口改变,使之符合“先进先出”的特性。若以deque为底部结构并封闭其头端开口,便得到了一个stack。stack不提供迭代器。

缺省状况下是以queue()为底部结构

empty():

size():

top():返回顶端元素

push():从顶端添加元素

pop():删除顶端元素

list也是双向开口的数据结构,以list为底部结构并封闭其头端开口,也可以形成一个stack。

stack<int,list<int> > istack;//便是以list为底部结构的stack

6.queue

是一种先进先出的数据结构,他有两个出口,只能最底端可以加入,最顶端可以取出。不允许有遍历行为。缺省情况下以deque为底部结构,并封闭了底部的出口和前端的开口。不提供遍历功能,不提供迭代器。

empty():

size():

front():取出前端的元素

back():取出末端元素

push():从末端添加元素

pop():删除前端元素

 也可以以list作为底端结构。

queue<int,list<int> > iqueue;

7.heap

不是ST容器组件,扮演priority queue的助手。二叉堆作为底层机制,二叉堆就是一个完全二叉树,整个树没有节点漏洞,我们可以利用array来存储所有节点。将#0保留,这样,若某个节点位于i,则左子节点位于2i,右子节点位于2i+1,其父节点位于i/2处。

heap分为max-heap和min-heap,STL提供的是max-heap。heap不提供遍历功能,也不提供迭代器。

push_heap(iterator first,iterator last):

pop_heap(iterator first,iterator last):

sort_heap():

make_heap():将一段现有的数据转化为一个heap。

8.priority_queue

是一个拥有权值观念的queue,允许以任何顺序将任何元素推入元素内,但取出时是从优先权最高的元素开始取。但它还是一个queue,只允许在底端加入元素,在顶端取出元素。缺省情况下是以vector为底部容器。只有queue顶端的元素(权值最高者),才有机会被外界取用。不提供遍历功能,也不提供diea

转载地址:http://johai.baihongyu.com/

你可能感兴趣的文章
不知道什么是数组?看这里就好了
查看>>
文科生北海唐的Java之路:方法(慕课)
查看>>
自学Java的轨迹线路
查看>>
如何更好的隐藏你自己,让我们谈谈什么是封装?
查看>>
文科生北海糖的:Java之路——继承
查看>>
Makefile 中:= ?= += =的区别
查看>>
消灭编译警告(Warning)
查看>>
(GCC) How can I hide "defined but not used" warnings in GCC?
查看>>
错误: 隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]
查看>>
error: two or more data types in declaration specifiers原因及解决方法
查看>>
Linux驱动基础开发2
查看>>
ioctl在socket中的一些用法及示例
查看>>
Linux设备驱动--块设备(二)之相关结构体
查看>>
Linux设备驱动--块设备(四)之“自造请求”
查看>>
Nand Flash和Nor Flash相关知识
查看>>
NAND flash和NOR flash的区别
查看>>
writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
查看>>
NOR Flash擦写和原理分析
查看>>
51单片机程序执行流程(STARTUP.A51)
查看>>
原码, 反码, 补码 详解
查看>>