stack 和queue

statck

1.statck 不是容器,而是适配器(container adaptor),并且遵循后进先出的原则

statck的模拟实现

stack 就是一个特殊的vector,因此使用vector可以模拟实现stack

namespace bite
{
	template<class T>
	class stack
	{
	public:
		stack(){}
		void push(const T& x)
		{
			_c.push_back(x);
		}
		void pop()
		{
			_c.pop_back();
		}
		T& top()
		{
			return _c.back();
		}
		const T& top()const
		{
			return _c.back();
		}
		size_t size()const
		{
			return _c.size();
		}
		bool empty()const
		{
			return _c.empty();
		}
	private:
		std::vector<T> _c;
	};

这里面有一些关于二叉树的复习

首先

1.向上调整和向下调整都是需要你的左右子树都是一个堆

2.访函数的本质是一个类,里面重载了一个operator(),对象可以像函数一样使用。

3.一般c++不怎么使用函数指针,都是使用仿函数。

优先级队列

优先级队列是一种容器适配器,他的第一个元素都是他所包含的最大的元素。

也可以使用

<int vector<int>>
greater<int>

容器适配器

是一种设计模式,将一个类的接口转换成客户希望的接口

deque

是一个融合怪,将list和vector给融合了起来,头插和尾插的效率比较高,而且不需要搬运元素

deque不是一个真正的连续的空间,是有一个map带着一段又一段的像连续的数组

vector和list的优缺点

vector的优点

1.尾插和尾删的效率更高,而且由于像数组一样可以支持下标

2.物理空间是连续的,所以高速缓存利用率高

vector的缺点

1.空间要扩容,扩容有代价,比如说空间的浪费和效率都会受到影响

2.头部和中间要是像插入的话效率比较低

3.vector不支持头删

List的优点

1.按需申请空间,不需要扩容

2.支持任一位置的删除和插入

List的缺点

1.之前测试,vector和List的sort还是有差距的

deque的缺点

deque不适合遍历,遍历的效率比较低,中间的插入和删除的效率是O(n)。

编译器只会检查打的框架,最后会按需实例化,而不会全部实例化,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值