deque容器

deque容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
//
// Created by Jason on 2020/3/29.
//
/*
* deque 容器
* 3331 deque构造函数
deque<T>deqT:/默认构造形式
deque (beg,end);//构造函数将[beg,end)区阃中的元素拷贝綸本身●
deque (n, elem);//构造函数将n个elem拷贝给本身。
deque(const deque&deq);//拷贝构造函数。φ
3332 deque赋值操作
assign(beg,end);//将[beg,end)区阃中的数据拷贝赋值绐本身。ψ
assign(n,elem);/将n个elem拷贝赋值给本身
deque& operator=( const deque&deq):/重载等号操作符
swap(deq)://将deq与本身的元素互换
3333 deque大小操作
deque.size();/返回客器中元素的个数
deque.empty();//判断容器是否
deque.resize(num)://重新指定容器的长度为num;若容器变长,则以默认值填充新位置。
如果容器变短,则末尾超出容器长度的元素被刪除。
resize(num,elem)://重新指定客器的长度为mm若容器变长,则以elem值填充新位置。
如器变短,则末尾超出容器长度的元素被刪除
3334
push_back(elem)://在寳器尾部添加一个数据
push_front(elem)://在容器头部插入一个数据
pop_back()://刪除答器最后一个数据
pop_ front()://删除容器第一个数据
33.35 deque数据存取
at(idx)://回索引id所指的数据,如果idk越界,抛出 out of range4
operator []:/回索引ik所指的数据,如果idx越界,不抛出异常,直接出错。
front();/返回第一个数据。
back()://返回最后一个数据
3336 deque插入操作
insert(pos,elem)://在pos位置插入一个elem元素的拷贝,返回新数据的位置。4
insert(pos, n, elem)://在ps位置插入n个elem数据,无返回值。
insert ( pos,beg,end):/在pos位置插入[beg,end)区间的数据,无返回值。
337 deque删除操作
clear();/移除答器的所有数据
erase(beg,end);//刪除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos);//(刪除pos位置的数据,返回下一个数据的位置。
* */
#include<bits/stdc++.h>
using namespace std;
void printDeque(const deque<int>&d)
{
//iterator 普通迭代器
//reverse_iterator 反转迭代器
//const_iterator 只读迭代器
for(_Deque_iterator<int, const int &, const int *> it = d.begin(); it != d.end(); it++)
{
// *it = 10000;//为了防止修改本体,在传入参数时加上const
cout<<*it<<" " ;
}
}
void test01()
{
deque<int>d;
d.push_back(10);
d.push_back(20);
d.push_back(30);
d.push_back(40);
printDeque(d);
deque<int>d2(10,10);
d.swap(d2);
printDeque(d);//交换两个deque的值
if(d.empty())
{
cout<<"D IS EMPTY"<<endl;
}else cout<<"D IS NOT EMPTY"<<endl;
}
void test02()
{
deque<int>d;
d.push_back(10);
d.push_back(20);
d.push_back(30);
d.push_back(40);
d.push_front(100);
d.push_front(200);
d.push_front(300);
d.push_front(400);

printDeque(d);//400,300,200,100,10,20,30,40
d.pop_back();
d.pop_front();
cout<<endl;
printDeque(d);// 300,200,100,10,20,30
cout<<"THE FIRST ELEM is "<<d.front()<<endl;
cout<<"THE LAST ELEM is "<<d.back()<<endl;

d.insert(++d.begin(),10000);
printDeque(d);
cout<<endl;
//删除
d.erase(++d.begin());
printDeque(d);
cout<<endl;
d.erase(++d.begin(),--d.end());//删除区间:留下头尾,中间删掉
printDeque(d);
cout<<endl;
d.clear();
}
/**************************************************************/
//利用sort排序
bool BIGTOSMALL(int v1,int v2)
{
return v1>v2;
}
void test03()
{
deque<int>d;
d.push_back(10);
d.push_back(20);
d.push_back(30);
d.push_back(40);
d.push_front(100);
d.push_front(200);
d.push_front(300);
d.push_front(400);
//默认排序规则从小到大
sort(d.begin(),d.end());
printDeque(d);
cout<<endl;
//从大到小
sort(d.begin(),d.end(),BIGTOSMALL );
printDeque(d);
}
int main()
{
// test01();
// test02();
test03();
system("pause");
return 0;
}
-------------本文结束,感谢您的阅读-------------