暑期普及1班C STL总结

信友队暑期总结

2.STL

(1)stack

后入先出(LIFO)的数据结构,默认基于 deque 实现。stack 常用于深度优先搜
索、一些字符串匹配问题以及单调栈问题。

(1)push() push(x)将x入栈,时间复杂度为O(1)。

(2)top() top()获得栈顶元素,时间复杂度为O(1)。

(3)pop() pop()用以弹出栈顶元素,时间复杂度为O(1)。

(4)empty() empty()可以检测stack是否为空,返回true为空,返回false为非空,时间复杂度为O(1)。

(5)size() size()返回stack内元素的个数,时间复杂度为O(1)。

Queue

先入先出(FIFO)的数据结构,默认基于 deque 实现。queue 常用于广度优先 搜索。

push(): 队列中是先进先出,push即在队尾插入一个元素。

pop(): 将队列中最靠前位置的元素拿掉,是没有返回值的void函数。

size(): 返回队列中元素的个数,返回值类型为unsigned int。

empty(): 判断队列是否为空,如果为空则返回1,否则返回0。

front(): 返回值为队列中的第一个元素,也就是最早、最先进入队列的元素。注意这里只是返回最早进入的元素,并没有把它剔除出队列。

back(): 返回队列中最后一个元素,也就是最晚进去的元素

优先队列

最大值先出的数据结构,默认基于vector实现堆结构 。它可以在O(n log n)的时间排序数组,O(log n) 的时间插入任意值,O(1) 的时间获得最大值,O(log n) 的时间删除最大值。priority_queue 常用于维护数据结构并快速获取最大或最小值

empty():若优先队列为空,则返回真。

pop():出队。

push():入队。

top():取堆顶(队头),返回优先队列中优先级最高的元素。

size():返回优先队列中元素的个数。

Vector

动态数组 ,是我们最常使用的数据结构之一,用于 O(1) 的随机读取。因为大部分算法的时间复杂度都会大于 O(n),因此我们经常新建 vector 来存储各种数据或中间变量。因为在尾部增删的复杂度是 O(1),我们也可以把它当作 stack 来用。

push_back(x) 在vector后面添加一个元素x

pop_back() 删除vector的尾元素

size() 获得vector中元素的个数

clear() 清空vector中的所有元素

insert(it,x) 向vector的任意迭代器it处插入一个元素x

erase(): 删除单个或一个区间内的所有元素

(5)set——迭代器访问

C ++中STL的一种关联式容器,它内部使用红黑树实现元素的有序存储。

特点:自动去重,自动排序, 快速查找插入删除元素。

insert(x) 将x插入到set容器中,并自动递增排序且去重,时间复杂度为O(logN)

find(x) 返回set中对应值为x的迭代器,时间复杂度为O(logN)

st.erase(first, last) 可以删除一个区间内的所有元素,其中first为所需删除区间的起始迭代器,last为所需要删除区间的末尾迭代器的下一个地址,也即为删除[first, last)。时间复杂度为O(last - first)。

clear() 清空set内的所有元素,复杂度为O(N)
图片1

Map

有序映射或有序表,在 set 的基础上加上映射关系,可以对每个元素 key 存一个
值 value。

size() 获得map中映射的对数,时间复杂度为O(1)

find(key) 返回键值为key的映射的迭代器,时间复杂度为O(logN)

erase(it) ①删除单个元素的迭代器 erase(it) ②删除单个元素映射的键 erase(keep)

clear() 清除map中的所有元素,时间复杂度为O(N)。

1 个赞