C++进阶-3-2vector容器
1 #include<iostream>
2 #include<vector>
3
4 using namespace std;
5
6 // vector 容器
7
8
9 // 1.vector容器构造函数
10
11 void printVector1(vector<int> &v) {
12 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
13 cout << *it << " ";
14 }
15 cout << endl;
16 }
17
18 void test01() {
19
20 // 默认构造
21 vector<int> v1;
22
23 for (int i = 0; i < 10; i++) {
24 v1.push_back(i);
25 }
26 printVector1(v1);
27
28 // 通过区间方式进行构造
29 vector<int> v2(v1.begin(), v1.end());
30 printVector1(v2);
31
32 // 通过n个elem方式构造
33 vector<int>v3(10, 100);
34 printVector1(v3);
35
36 // 拷贝构造
37 vector<int> v4(v3);
38 printVector1(v4);
39
40 }
41
42 // 2.vector赋值操作
43
44 void printVector2(vector<int> &v) {
45 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
46 cout << *it << " ";
47 }
48 cout << endl;
49 }
50
51 void test02() {
52
53 // 初始化
54 vector<int> v1;
55 for (int i = 0; i < 10; i++) {
56 v1.push_back(i);
57 }
58 printVector2(v1);
59
60 // 赋值 operator=
61 vector<int> v2;
62 v2 = v1;
63 printVector2(v2);
64
65 // 赋值 assign
66 vector<int> v3;
67 v3.assign(v1.begin(),v1.end());
68 printVector2(v3);
69
70 // 赋值 assign 的 n 个 elem 方式
71 vector<int> v4;
72 v4.assign(10, 100);
73 printVector2(v4);
74
75 }
76
77 // 3.vector容量和大小
78
79 void printVector3(vector<int>& v) {
80 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
81 cout << *it << " ";
82 }
83 cout << endl;
84 }
85 void test03() {
86
87 // 初始化
88 vector<int> v1;
89 for (int i = 0; i < 10; i++) {
90 v1.push_back(i);
91 }
92 printVector3(v1);
93
94 // 判断是否为空,true=为空
95 if (v1.empty()) {
96 cout << "v1为空" << endl;
97 }
98 else {
99 cout << "v1不为空" << endl;
100 cout << "v1的容量为:" << v1.capacity() << endl;
101 cout << "v1的大小为:" << v1.size() << endl;
102 }
103
104 // 重新指定大小
105 // 如果重新指定的比原来容量大,默认用0填充新位置
106 v1.resize(15);
107 printVector3(v1);
108 v1.resize(17, 100); // 可以指定填充数是什么
109 printVector3(v1);
110 v1.resize(5, 100); // 如果指定的对比原来的短了,超出部分会被删除
111 printVector3(v1);
112
113 }
114
115 // 4.vector插入和删除
116
117 void printVector4(vector<int>& v) {
118 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
119 cout << *it << " ";
120 }
121 cout << endl;
122 }
123
124 void test04() {
125
126 vector<int> v1;
127
128 // 尾插
129 v1.push_back(10);
130 v1.push_back(20);
131 v1.push_back(30);
132 v1.push_back(40);
133 v1.push_back(50);
134
135 // 遍历
136 printVector4(v1);
137
138 // 尾删
139 v1.pop_back();
140 printVector4(v1);
141
142 // 插入
143 v1.insert(v1.begin(), 100); // 第一个参数必须是迭代器
144 printVector4(v1);
145
146 v1.insert(v1.begin(), 3, 1000); // n个elem的方式
147 printVector4(v1);
148
149 // 删除
150 v1.erase(v1.begin());
151 printVector4(v1);
152
153 // 清空
154 //v1.erase(v1.begin(), v1.end());
155 //printVector4(v1);
156
157 v1.clear();
158 printVector4(v1);
159
160 }
161
162 // 5.vector数据存取
163 void test05() {
164
165 // 初始化
166 vector<int> v1;
167 for (int i = 0; i < 10; i++) {
168 v1.push_back(i);
169 }
170
171 // 利用 [] 的方式来访问数组中的元素
172 for (int i = 0; i < v1.size(); i++) {
173 cout << v1[i] << " ";
174 }
175 cout << endl;
176
177 // 利用 at 的方式来访问数组中的元素
178 for (int i = 0; i < v1.size(); i++) {
179 cout << v1.at(i) << " ";
180 }
181 cout << endl;
182
183 // 获取第一个元素
184 cout << "第一个元素:" << v1.front() << endl;
185
186 // 获取最后一个元素
187 cout << "最后一个元素:" << v1.back() << endl;
188
189 }
190
191 // 6.vector互换容器
192
193 void printVector6(vector<int>& v) {
194 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
195 cout << *it << " ";
196 }
197 cout << endl;
198 }
199 void test06() {
200
201 // 1.基本用途 swap()
202 cout << "基本用法:" << endl;
203
204 // 初始化
205 vector<int> v1;
206 for (int i = 0; i < 10; i++) {
207 v1.push_back(i);
208 }
209 cout << "交换前:" << endl;
210 printVector6(v1);
211
212 vector<int> v2;
213 for (int i = 10; i > 0; i--) {
214 v2.push_back(i);
215 }
216 printVector6(v2);
217
218 cout << "交换后:" << endl;
219 v1.swap(v2);
220 printVector6(v1);
221 printVector6(v2);
222
223 // 2.实际用途
224 cout << endl;
225 cout << "实际用法:" << endl;
226
227 vector<int>v;
228 for (int i = 0; i < 100000; i++) {
229 v.push_back(i);
230 }
231
232 cout << "v的容量是:" << v.capacity() << endl;
233 cout << "v的大小是:" << v.size() << endl;
234
235 v.resize(3); // 重新指定容量大小
236 cout << "v的容量是:" << v.capacity() << endl;
237 cout << "v的大小是:" << v.size() << endl;
238
239 // 巧用swap收缩内存
240 vector<int>(v).swap(v);
241 cout << "v的容量是:" << v.capacity() << endl;
242 cout << "v的大小是:" << v.size() << endl;
243 // vcetor<int>(v) 匿名对象,当前行执行完,系统自动回收
244 }
245
246 // 7.vector预留空间
247 // 减少vector在动态扩展时的扩展次数
248 // reserve(int len); // 容器预留出len个元素的长度,预留位置不做初始化,元素不可访问(与resize不同)
249 void test07() {
250
251 // 统计存100000个数,要重新开辟多少次空间
252 vector<int> v1;
253 int num = 0; // 统计开辟次数
254 int* p = NULL;
255 for (int i = 0; i < 100000; i++) {
256 v1.push_back(i);
257
258 if (p != &v1[0]) {
259 p = &v1[0];
260 num++;
261 }
262 }
263 cout << "num :" << num << endl; // num = 30
264
265 // 可以使用reserve提前预留空间,减少开辟次数
266 vector<int> v2;
267 v2.reserve(100000);
268 int num1 = 0; // 统计开辟次数
269 int* p1 = NULL;
270 for (int i = 0; i < 100000; i++) {
271 v2.push_back(i);
272
273 if (p1 != &v2[0]) {
274 p1 = &v2[0];
275 num1++;
276 }
277 }
278 cout << "num1 :" << num1 << endl; // num1 = 1
279
280 }
281
282 int main() {
283
284 // 1.vector容器构造函数
285 //test01();
286
287 // 2.vector赋值操作
288 //test02();
289
290 // 3.vector容量和大小
291 //test03();
292
293 // 4.vector插入和删除
294 //test04();
295
296 // 5.vector数据存取
297 //test05();
298
299 // 6.vector互换容器
300 //test06();
301
302 // 7.vector预留空间
303 test07();
304
305 system("pause");
306
307 return 0;
308 }
309
310
311 // 总结
312 //
313 // vector 容器
314 //
315 // 功能:vector容器数据结构与数组非常相似,也称为单端数组
316 // 与普通数组区别:数组是静态空间,vector可以动态扩展
317 // 并不是在原空间后续更新新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间
318 //
319 // vector容器的迭代器是支持 随机访问 的迭代器
320 //
大家好,我是辣条。现在短视频可谓是一骑绝尘,吃饭的时候、休息的时候、躺在床上都在刷短视频,今天给大家带来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解释器的应用程序,以及与swig生成的STL类的接口(interface)。多亏了swig,几乎所有事情都进行得很好,除了一件事:%moduleStuff%import"std_vector.i"namespacestd{%template(Vectord)vector;};%inline%{std::vectortest;%}当我尝试在Ruby中使用它时,类型Stuff::Vectord存在,但它不是生成的单例方法测试的返回类型。查看生成的C包装器文件,我可以看到类Vectord及其方法已定义,但查看_wrap_test_get我没有看到任何返回sth类St
我在网上查了几个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