Deque容器基础

//deque 是“double-ended queue”的缩写, 和 vector 一样都是 STL 的容器, deque 是双
端数组
, 而 vector 是单端的。
    deque 在接口上和 vector 非常相似, 在许多操作的地方可以直接替换。
    deque 可以随机存取元素(支持索引值直接存取, 用[]操作符或 at()方法, 这个等下

会详讲)。

            deque.at(idx); //返回索引 idx 所指的数据, 如果 idx 越界, 抛出 out_of_range

            deque[idx]; //返回索引 idx 所指的数据, 如果 idx 越界, 不抛出异常, 直接出错。

            deque.front(); //返回第一个数据。

    deque 头部和尾部添加或移除元素都非常快速。 但是在中部安插元素或移除元素比较费时。

    #include

#include"iostream"
using namespace std;
#include "deque"
/*初始化*/
void display(deque &t)
{
	for (deque::iterator it = t.begin(); it != t.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}
int main01()
{
	dequedeq_a1;
	dequedeq_a2;
	deque();//尖括号内可以是基本类型,也可以是自定义类型
	deq_a1.push_front(1);//支持从头部插入元素
	deq_a1.push_back(2);
	deq_a1.push_back(3);
	deq_a1.push_back(4);
	deq_a1.push_front(0);
	dequedeq_a3(5,9);
	dequedeq_a4 = deq_a3;
	display(deq_a1);//0,1,2,3,4
	cout << "头部元素" << deq_a1.front() << endl;//输出头部元素
	deq_a1.pop_front();//弹出头部元素
	display(deq_a1);//1234
	display(deq_a3);//99999
	display(deq_a4);//99999
	
	return 0;
}
/*查找deque中数值为100的下标值*/
int main02()
{
	int a[] = {1,2,3,4,5,6};
	dequedeq_a1(a, a + 6);
	deq_a1.insert(deq_a1.begin() + 3, 100);
	display(deq_a1);
	deque::iterator it = find(deq_a1.begin(), deq_a1.end(), 100);
	if (it != deq_a1.end())
	{
		cout << "100的下标值是:" << distance(deq_a1.begin(), it)<
/应用案例
//以deque 为基础,编制一个先进先出的队列;
//包含函数push,pop,size,empty,front,back
#include"iostream"
using namespace std;
#include"deque"
template 
class myqueue
{public:
	void push(const T&t)
	{
		d.push_back(t);
	}
	void pop()
	{
		d.pop_front();
	}
	int size()
	{
		return d.size();
	}
	bool empty()
	{
		return d.empty();

	}
	T& front()
	{
		return d.front();
	}
	T& back()
	{
		return d.back();
	}
	void dispaly()
	{
		for (int i = 0; i < d.size(); i++)
		{
			cout << d.at(i) << " ";
		}
		cout << endl;
	}
private:
	dequed;
};


int main()
{
	myqueuea1;
	for (int i = 0; i <= 5; i++)
	{
		a1.push(i);
	}
	cout << "yuanduilie" << endl;
	a1.dispaly();
	
	a1.pop();
	cout << "删除头元素duilie" << endl;
	a1.dispaly();

	a1.push(100);
	cout << "插入元素100duilie" << endl;
	a1.dispaly();
	cout << "头元素"<

你可能感兴趣的:(STL,基础学习笔记)