1 //deque容器 构造函数  //deque赋值操作   //deque大小操作 //重新指定大小
2 //deque没有容量概念 //deque插入和删除 //deque 容器数据存取
3 ////deque 排序 sotr算法
4
5 #include<iostream>
6 #include<vector>
7 #include<deque>
8 #include<algorithm>
9
10 using namespace std;
11
12
13 //打印
14 void printDeuqe( const deque<int>& d)
15 {
16 for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
17 {
18 //*it = 100; //容器中的数据不可以修改了
19 cout << *it << " ";
20 }
21 cout << endl;
22 }
23 //deque容器 构造函数
24 void test01()
25 {
26 deque<int>d1;
27 for (int i = 0; i < 10; i++)
28 {
29 d1.push_back(i);
30 }
31 printDeuqe(d1);
32
33 //将d1的值赋值给d2
34 deque<int>d2(d1.begin(), d1.end());
35 //deque<int>d2;
36 //d2 = d1;
37 printDeuqe(d2);
38
39 deque<int>d3(10, 100);
40 printDeuqe(d3);
41
42 deque<int>d4(d3);
43 printDeuqe(d4);
44
45 }
46 //打印
47 void printDeque(const deque<int>& d2)
48 {
49 for (deque<int>::const_iterator it = d2.begin(); it != d2.end(); it++)
50 {
51 cout << *it << " ";
52 }
53 cout << endl;
54 }
55
56 //deque赋值操作
57 void test02()
58 {
59 deque<int>d2;
60 for (int i = 0; i < 10; i++)
61 {
62 d2.push_back(i);
63 }
64 printDeque(d2);
65
66 //operator =等号赋值
67 deque<int>d3;
68 d3 = d2;
69 printDeque(d3);
70
71 //assign 赋值
72
73 deque<int>d4;
74 d4.assign(d2.begin(), d2.end());
75 printDeque(d4);
76
77 //n个几
78 deque<int>d5;
79 d5.assign(10, 100);
80 printDeque(d5);
81
82 }
83
84
85 //打印
86 void printDeuqe3(const deque<int>& d3)
87 {
88 for (deque<int>::const_iterator it = d3.begin(); it != d3.end(); it++)
89 {
90 cout << *it << " ";
91 }
92 cout << endl;
93 }
94 //deque大小操作
95
96 void test03()
97 {
98 deque<int>d3;
99 for (int i = 0; i < 10; i++)
100 {
101 d3.push_back(i);
102 }
103 printDeuqe3(d3);
104
105 if (d3.empty())
106 {
107 cout << "d3为空!!" << endl;
108 }
109 else
110 {
111 cout << "d3不为空!!!" << endl;
112 cout << "d3的大小为:" << d3.size() << endl;
113 //deque没有容量概念
114
115 }
116 //重新指定大小
117 d3.resize(15, 1);
118 //d3.resize(15);
119 printDeuqe3(d3);
120
121 d3.resize(6);
122 printDeuqe3(d3);
123
124 }
125 //打印
126 void printDeque4(const deque<int>& d4)
127 {
128 for (deque<int>::const_iterator it = d4.begin(); it != d4.end(); it++)
129 {
130 cout << *it << " ";
131 }
132 cout << endl;
133 }
134 //插入和删除
135 //两端操作
136 void test04()
137 {
138 deque<int>d4;
139 //尾插
140 d4.push_back(10);
141 d4.push_back(20);
142
143 //头插
144 d4.push_front(100);
145 d4.push_front(200);
146
147 printDeque4(d4); //200 100 10 20
148
149
150 //尾删
151 d4.pop_back(); //200 100 10
152 printDeque4(d4);
153 //头删
154 d4.pop_front(); //100 10
155 printDeque4(d4);
156
157
158 }
159
160 void test05()
161 {
162 deque<int>d5;
163 d5.push_back(10);
164 d5.push_back(20);
165 d5.push_front(100);
166 d5.push_front(200);
167
168 printDeque4(d5); //200 100 10 20
169
170 //insert插入
171 d5.insert(d5.begin(), 1000);
172 printDeque4(d5);//1000 200 100 10 20
173
174 d5.insert(d5.begin(), 3,10001);
175 //10001 10001 10001 1000 200 100 10 20
176 printDeque4(d5);
177
178
179 //按照区间插入
180 deque<int>d6;
181 d6.push_back(1);
182 d6.push_back(2);
183 d6.push_back(3);
184
185 d5.insert(d5.begin(), d6.begin(), d6.end());
186 //1 2 3 10001 10001 1001 1000 200 100 10 20
187 printDeque4(d5);
188 }
189 void test07()
190 {
191 deque<int>d7;
192 d7.push_back(10);
193 d7.push_back(20);
194 d7.push_front(100);
195 d7.push_front(200);
196
197 //200 100 10 20
198
199 //删除
200 deque<int>::iterator it = d7.begin();
201 it++; //第二个数据
202 d7.erase(it);
203 //200 10 20
204 printDeque4(d7);
205
206
207 //按照区间方式删除
208 d7.erase(d7.begin(), d7.end()); //换行符
209 printDeque4(d7);
210 //清空
211 d7.clear();
212 printDeque4(d7);
213
214 }
215
216
217 //deque 容器数据存取
218 void test08()
219 {
220 deque<int>d8;
221 d8.push_back(10);
222 d8.push_back(20);
223 d8.push_back(30);
224
225 d8.push_front(100);
226 d8.push_front(200);
227 d8.push_front(300);
228
229 //300 200 100 10 20 30
230 //通过[]方式访问元素
231 for (int i = 0; i < d8.size(); i++)
232 {
233 cout << d8[i] << " ";
234 }
235 cout << endl;
236
237 //通过at的方式
238 for (int i = 0; i < d8.size(); i++)
239 {
240 cout << d8.at(i) << " ";
241 }
242 cout << endl;
243
244 cout << "第一个元素为: " << d8.front() << endl;
245 cout << "最后一个元素为: " << d8.back() << endl;
246 }
247 //打印
248 void printDeque9(const deque<int>& d9)
249 {
250 for (deque<int>::const_iterator it = d9.begin(); it != d9.end(); it++)
251 {
252 cout << *it << " ";
253 }
254 cout << endl;
255 }
256
257 //deque 排序 sotr算法
258 void test09()
259 {
260 deque<int>d9;
261 d9.push_back(10);
262 d9.push_back(20);
263 d9.push_back(30);
264
265 d9.push_front(100);
266 d9.push_front(200);
267 d9.push_front(300);
268 //300 200 100 10 20 30
269 printDeque9(d9);
270
271 //排序 从小到大 升序
272 //对于支持随机访问迭代器的容器,都可以利用sort算法直接对其进行排序
273 //vector容器也可以利用 sort 进行排序
274 sort(d9.begin(), d9.end());
275 cout << "排序后的结果:" << endl;
276 printDeque9(d9);
277
278
279
280 }
281
282 int main()
283 {
284 test01();
285 test02();
286
287 test03();
288
289 test04();
290
291 test05();
292
293 test07();
294
295 test08();
296
297 test09();
298 system("pause");
299 return 0;
300 }

C++ //deque容器 构造函数 //deque赋值操作 //deque大小操作 //重新指定大小 //deque没有容量概念 //deque插入和删除 //deque 容器数据存取 ////deque 排序 sotr算法的更多相关文章

  1. cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size

    cb11a_c++_顺序容器的操作4 2 容器大小的操作 3 c.size() 容器当前的个数 4 c.max_size(),容器最大存储量 5 c.empty() 是否为空 6 c.resize(n ...

  2. [c++基础]3/5原则--拷贝构造函数+拷贝赋值操作符

    /* * main.cpp * * Created on: Apr 7, 2016 * Author: lizhen */ #include <iostream> #include &qu ...

  3. C++复制构造函数和赋值符的区别

    From  http://blog.csdn.net/randyjiawenjie/article/details/6666937 非常感谢原作者分享. class CTest{public: CTe ...

  4. C++中的构造函数,拷贝构造函数和赋值运算

    关于C++中的构造函数,拷贝构造函数和赋值运算,以前看过一篇<高质量C++/C编程指南>的文章中介绍的很清楚,网上能搜索到,如果想详细了解这方面的知识可以参看一下这篇文章. 常见的给对象赋 ...

  5. 构造函数语义学之Copy Constructor构建操作(2)

    二.详述条件 3 和 4 那么好,我又要问大家了,条件1 和 2比较容易理解.因为member object或 base class 含有copy constructor.那么member objec ...

  6. 关于C++中的拷贝构造函数和赋值函数

    如果类定义的数据成员中存在指针或引用,那么最好重载这两个函数. 1.     定义 拷贝构造函数的定义格式:构造函数名(const 源类名& 引用对象形参名){} 赋值函数定义格式:源类名 & ...

  7. C++雾中风景6:拷贝构造函数与赋值函数

    在进行C++类编写的过程之中,通常会涉及到类的拷贝构造函数与类的赋值函数.初涉类编写的代码,对于两类函数的用法一直是挺让人困惑的内容.这篇文章我们会详细来梳理拷贝构造函数与赋值函数的区别. 1.调用了 ...

  8. C++中:默认构造函数、析构函数、拷贝构造函数和赋值函数——转

    对于一个空类,编译器默认产生4个成员函数:默认构造函数.析构函数.拷贝构造函数和赋值函数.1.构造函数:构造函数是一种特殊的类成员,是当创建一个类的时候,它被调用来对类的数据成员进行初始化和分配内存. ...

  9. C++中构造函数,拷贝构造函数和赋值函数的区别和实现

    C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象 ...

  10. C++中的构造函数,拷贝构造函数,赋值函数

    C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象 ...

随机推荐

  1. Linux线程API使用与分析

    线程是操作系统进程调度器可调度的最小粒度的执行单元 执行ps -eLF查看线程 UID PID PPID LWP C NLWP SZ RSS PSR STIME TTY TIME CMD root 1 ...

  2. consul系列文章01---docker安装consul

    1.下载镜像 2.运行容器 docker run --name consul -d -p 8500:8500 --restart=always  consul agent -server -boots ...

  3. # github突破7k star 即时通讯(IM)开源项目OpenIM每周迭代版本发布

    v2.0已经重构完毕,架构更清晰,代码更规范,邀请各位参与OpenIM社区建设有兴趣的同学可以加我私聊. 目前侧正在业务开发,已提供更多功能,包括群管理,阅后即焚,朋友圈,标签下发等. web端体验: ...

  4. go中的sync.pool源码剖析

    sync.pool sync.pool作用 使用 适用场景 案例 源码解读 GET pin pinSlow getSlow Put poolChain popHead pushHead pack/un ...

  5. 语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解、Zero-shot CoT、Few-shot CoT 以及在LLM上应用

    大语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解.Zero-shot CoT.Few-shot CoT 以及在LLM上应用 1.思维链定义 背景 在 2017- ...

  6. 面试官:SpringCloudGateway过滤器类型有哪些?

    在 Spring Cloud Gateway 中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制.例如,它可以实现对传入的请求进行验证.修改.日志记录.身份验证.流量控制等各种功能. ...

  7. ch583/ch582/ch573/ch571 central(主机)程序

    本程序是在CH582m上运行的, 一.主从连接 主机这里可以根据从机的MAC地址进行连接.static uint8_t PeerAddrDef[B_ADDR_LEN] = {0x02, 0x02, 0 ...

  8. 深入浅出Java多线程(七):重排序与Happens-Before

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第七篇内容:重排序与Happens-Before.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在上一篇文章 ...

  9. Linux输出转换命令 xargs

    一.基本用法 xargs命令的作用,是将标准输入转为命令行参数. 原因:大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数 如下面 echo 不接受标准输出做参 ...

  10. ASCII、Unicode、UTF8 10年后,史无前例,自己用js实现《专题3》

    我自己史无前例的开发了一个网页小工具,可以利用这个工具 直接查询到 一个字符的unicode二进制的定义,和utf8格式下内存中 存储的二进制. =========================== ...