C++进阶-3-3deque容器
1 #include<iostream>
2 #include<deque>
3 #include<algorithm>
4 using namespace std;
5
6 // deque 容器
7
8 void printDeque(deque<int>& d) {
9 for (deque<int>::iterator it = d.begin(); it != d.end(); it++) {
10 cout << *it << " ";
11 }
12 cout << endl;
13
14 }
15
16 // 1. 构造函数
17 void test01() {
18
19 deque<int> d1;
20 for (int i = 0; i < 10; i++) {
21 d1.push_back(i);
22 }
23 printDeque(d1);
24
25 deque<int> d2(d1.begin(), d1.end());
26 printDeque(d2);
27
28 deque<int> d3(10, 100);
29 printDeque(d3);
30
31 deque<int> d4(d3);
32 printDeque(d4);
33 }
34
35 // 2.deque赋值操作
36 void test02() {
37
38 deque<int> d1;
39 for (int i = 0; i < 10; i++) {
40 d1.push_back(i);
41 }
42 printDeque(d1);
43
44 // operator= 赋值
45 deque<int>d2;
46 d2 = d1;
47 printDeque(d2);
48
49 // assign 赋值
50 deque<int> d3;
51 d3.assign(d1.begin(), d1.end());
52 printDeque(d3);
53
54 deque<int> d4;
55 d4.assign(10, 100);
56 printDeque(d4);
57
58 }
59
60 // 3.deque大小操作
61 void test03() {
62
63 deque<int> d1;
64 for (int i = 0; i < 10; i++) {
65 d1.push_back(i);
66 }
67 printDeque(d1);
68
69 if (d1.empty()) {
70 cout << "d1为空!" << endl;
71 }
72 else {
73 cout << "d1不为空" << endl;
74 cout << "d1的大小为:" << endl;
75 // deque容器没有容量概念
76 }
77
78 d1.resize(15);
79 printDeque(d1);
80
81 d1.resize(18, 4);
82 printDeque(d1);
83
84 d1.resize(5);
85 printDeque(d1);
86 }
87
88 // 4.deque插入和删除
89 void test04() {
90
91 // 两端操作
92 cout << "两端操作:" << endl;
93 deque<int> d1;
94
95 // 尾插
96 d1.push_back(10);
97 d1.push_back(20);
98 // 头插
99 d1.push_front(100);
100 d1.push_front(200);
101
102 printDeque(d1);
103
104 // 尾删
105 d1.pop_back();
106 printDeque(d1);
107 // 头删
108 d1.pop_front();
109 printDeque(d1);
110
111 cout << endl;
112
113
114 // 指定位置操作
115 cout << "指定位置操作:" << endl;
116 deque<int>d2;
117 d2.push_back(10);
118 d2.push_back(20);
119 d2.push_back(30);
120 d2.push_back(40);
121
122 printDeque(d2);
123
124 // insert 插入
125 d2.insert(d2.begin(), 1000);
126 printDeque(d2);
127
128 d2.insert(d2.begin(), 2, 800);
129 printDeque(d2);
130
131 d2.insert(d2.begin(), d1.begin(),d1.end());
132 printDeque(d2);
133
134 cout << endl;
135
136 // 删除操作
137 cout << "删除操作!" << endl;
138 deque<int>::iterator it = d2.begin();
139 it++;
140 d2.erase(it);
141 printDeque(d2);
142
143 d1.erase(d1.begin(), d1.end());
144 printDeque(d1);
145
146 d1.clear();
147 printDeque(d1);
148
149 }
150
151 // 5.deque数据存取
152 void test05() {
153
154 deque<int>d;
155 d.push_back(10);
156 d.push_back(20);
157 d.push_back(30);
158 d.push_back(100);
159 d.push_back(200);
160 d.push_back(300);
161
162 // 通过 [] 访问元素
163 for (int i = 0; i < d.size(); i++) {
164 cout << d[i] << " ";
165 }
166 cout << endl;
167
168 // 通过 at 访问元素
169 for (int i = 0; i < d.size(); i++) {
170 cout << d.at(i) << " ";
171 }
172 cout << endl;
173
174 cout << "第一个元素为:" << d.front() << endl;
175 cout << "最后一个元素:" << d.back() << endl;
176
177 }
178
179 // deque排序
180 void test06() {
181
182 deque<int>d;
183 d.push_back(10);
184 d.push_back(20);
185 d.push_back(30);
186 d.push_front(100);
187 d.push_front(200);
188 d.push_front(300);
189
190 printDeque(d);
191
192 // 排序 默认排序规则:从小到大,升序
193 // 对于支持随机访问的迭代器的容器,都可以利用sort算法直接对其进行排序;
194 sort(d.begin(), d.end());
195 cout << "排序后:" << endl;
196 printDeque(d);
197
198 }
199
200 int main() {
201
202 // 1. 构造函数
203 //test01();
204
205 // 2. 赋值操作
206 //test02();
207
208 // 3.大小操作
209 //test03();
210
211 // 4.插入和删除
212 //test04();
213
214 // 5.数据存取
215 //test05();
216
217 // 6.deque排序
218 test06();
219
220 system("pause");
221
222 return 0;
223 }
224
225 // 总结
226 //
227 // deque 容器
228 //
229 // 功能 :双端数组,可以对头端进行插入删除操作
230 //
231 // deque与vector区别:
232 // vector对于头部的插入删除效率低,数据量越大,效率越低
233 // deque相对而言,对头部的插入删除速度会比vector快
234 // vector访问元素时的速度会比deque快,这和两者内部实现有关
235 //
236 // deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
237 // 中控器维护的是每个缓冲区的地址,是的使用deque时像是一片连续的内存空间
238 //
239 // deque容器的迭代器也是支持 随机访问 的
240 //
大家好,我是辣条。现在短视频可谓是一骑绝尘,吃饭的时候、休息的时候、躺在床上都在刷短视频,今天给大家带来python爬虫进阶:美拍视频地址加密解析。短视频js逆向解析抓取目标工具使用重点学习内容项目思路解析抓取目标目标网址:美拍视频工具使用开发环境:win10、python3.7开发工具:pycharm、Chrome工具包:requests、xpath、base64重点学习内容爬虫采集数据的解析过程js代码调试技巧js逆向解析代码Python代码的转换项目思路解析进入到网站的首页挑选你感兴趣的分类根据首页地址获取到进入详情页面的超链接的跳转地址找到对应加密的视频播放地址数据这个数据是静态的网页
我想在保持文本/图像不透明的同时使我的容器背景透明。只能使用HTML做到这一点吗?这是我的代码:看答案我看到了您的问题,如果我正确理解您,我想我知道您可以做什么。我注意到的一件事是,在我进一步走之前,看起来您正在使用引导程序代码。如果您更改了可能与此相关的CSS样式表,则可能会更好,更有效,也可能不会破坏整体代码的其他元素,但是让我们看看我的解决方案是否对您有效。基本上您想做的是:1)在您的HTML中编写一个“样式”标签,然后在其中放入样式(CSS)属性(您可以将其放入HTML代码的标题中以更好地跟踪它)。2)使用提供背景颜色的“RGBA”格式,并将其不透明度为“0”作为代码段的第四值。因此,
经过recenttutorial关于使用Git为Ruby部署设置AWSElasticBeanstalk,我只是从我的CI服务器设置了一个ElasticBeanstalk环境。但是,应用程序无法启动。我查看日志发现bundleinstall失败并显示一条错误消息。Fetchinggit@github.com:example/private-repository.gitHostkeyverificationfailed.fatal:Theremoteendhungupunexpectedly[31mGiterror:commandgitclone'git@github.com:exampl
一、概览实现效果如下:二、项目环境1、nodejs版本node-vv16.16.02、npm版本npm-vnpmWARNconfigglobal`--global`,`--local`aredeprecated.Use`--location=global`instead.8.15.03、vue脚手架版本vue-V@vue/cli5.0.8三、创建vue项目1、创建名为vuetest的项目vuecreatevuetest选择Default([Vue2]babel,eslint) 2、切换到项目目录,启动项目cdvuetestnpmrunserve 3、使用浏览器预览 http://localh
我在网上查了几个Ruby教程,他们似乎什么都用数组。那么如何在Ruby中实现以下数据结构呢?堆栈队列链表map组 最佳答案 (从评论中移出)好吧,通过限制堆栈或队列方法(push、pop、shift、unshift),数组可以是堆栈或队列。使用push/pop提供LIFO(后进先出)行为(堆栈),而使用push/shift或unshift/pop提供FIFO行为(队列)。map是hashes,和一个Set类已经存在。您可以使用类实现链表,但数组将使用标准数组方法提供类似于链表的行为。 关
我只是想知道是否有办法选择DIV中的最后一个WORD。我认为没有任何明显的方法可以做到这一点,那么有什么变通办法吗?我不介意使用CSS或Javascript来实现这一点。提前致谢 最佳答案 或者没有,它归结为基本的字符串操作(使用match())方法。varwords=$('#your_div').text().match(/(\w+)/g);if(words.length){varlast_word=words[words.length-1];}我们使用match()构建所有单词的数组方法,然后获取最后一个(varlast_wor
有没有办法配置Knockoutcomponent替换容器元素而不是将其内容嵌套在容器元素中?例如,如果我使用以下模板将自定义组件注册为my-custom-element:Helloworld!是否可以像这样使用组件:最终产品是这样的:Helloworld!而不是这样:(Knockout默认渲染组件的方式)Helloworld!Basedontheanswertothisquestion,似乎此功能内置于模板引擎中,我假设在呈现组件模板时也会使用它。有没有一种方法可以指定组件应该使用replaceNode的renderMode进行渲染?我知道“虚拟元素”语法,它允许在HTML注释中定义组
这个错误是什么意思?如何解决?ReactMount:Rootelementhasbeenremovedfromitsoriginalcontainer.Newcontainer在这之后我得到了这个:Uncaughtobjectreact.js:15915invariantreact.js:15915ReactMount.findComponentRootreact.js:10584ReactMount.findReactNodeByIDreact.js:10480getNodereact.js:10089(anonymousfunction)react.js:7307(anonymou
我正在使用node:6.7.0图像作为我的docker容器,然后按照yarn的安装指南进行操作sudoapt-keyadv--keyserverpgp.mit.edu--recvD101F7899D41F3C3echo"debhttp://dl.yarnpkg.com/debian/stablemain"|sudotee/etc/apt/sources.list.d/yarn.list然后我做apt-getupdate&&apt-getinstallyarn但此时我收到一条错误消息,上面写着yarn:Depends:nodejs(>=4.0.0)butitisnotgoingtobei
这是我正在使用的:{}}>在容器中我不知道如何将数据从模态传递到父组件。任何类型的教程或链接都可以。提前致谢。 最佳答案 让我们假设您的模态框在/components/MyModal中单独归档以概括事物。您可以让您的Modal调用一个函数,在每次输入文本更改时通过props传递该函数。这是您可以使用的简单回调逻辑。尽可能避免使用refs。importMyModalfrom'../components/MyModal';...classHomeextendsComponent{onInputChanged=(changedText)=