ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ //vector 容器构造 vector赋值操作 vector 容量大小 vector插入和删除 //vector数据存取 vector互换容器 vector预留空间

2021-08-14 12:02:32  阅读:165  来源: 互联网

标签:容器 cout ++ back C++ vector v4 push


  1 //vector  容器构造  vector赋值操作  vector 容量大小  vector插入和删除
  2 //vector数据存取    vector互换容器  vector预留空间
  3 #include<iostream>
  4 #include<string>
  5 #include<vector>
  6 
  7 using namespace std;
  8 
  9 //打印
 10 void printVector(vector<int> &v)
 11 {
 12     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
 13     {
 14         cout << *it << " ";
 15     }
 16     cout << endl;
 17 }
 18 //vector  容器构造
 19 void test01()
 20 {
 21     vector<int>v1;   //默认构造  无参构造
 22     for (int i = 0; i < 10; i++)
 23     {
 24         v1.push_back(i);
 25     }
 26 
 27     printVector(v1);
 28 
 29     //通过区间的方式进行构造
 30 
 31     vector<int>v2(v1.begin(), v1.end());
 32     printVector(v2);
 33 
 34     //N个elem方式构造
 35     vector<int>v3(10, 100);
 36     printVector(v3);
 37 
 38 
 39     //拷贝构造
 40     vector<int>v4(v3);
 41     printVector(v4);
 42 
 43 }
 44 //打印
 45 void printVector1(vector<int>&v1)
 46 {
 47     for (vector < int>::iterator it = v1.begin(); it != v1.end();it++)
 48     {
 49         cout << *it << " ";
 50     }
 51     cout << endl;
 52 }
 53 
 54 //vector 赋值
 55 void test02()
 56 {
 57     vector<int>v1;
 58     for (int i = 0; i < 10; i++)
 59     {
 60         v1.push_back(i);
 61     }
 62     printVector1(v1);
 63     //赋值   operator=
 64     vector<int>v2;
 65     v2 = v1;
 66     printVector1(v2);
 67 
 68     //assign
 69     vector<int>v3;
 70     v3.assign(v2.begin(), v2.end());
 71     printVector(v3);
 72 
 73     //n个elem 方式赋值
 74     vector<int>v4;
 75     v4.assign(10, 100);
 76     printVector(v4);
 77 
 78 }
 79 
 80 //打印
 81 void printVector3(vector<int>& v3)
 82 {
 83     for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++)
 84     {
 85         cout << *it << " ";
 86     }
 87     cout << endl;
 88 }
 89 
 90 //vector 容量大小
 91 void test03()
 92 {
 93     vector<int>v3;
 94     for (int i = 0; i < 10; i++)
 95     {
 96         v3.push_back(i);
 97     }
 98     printVector3(v3);
 99 
100     if (v3.empty())  //为真 代表容器为空
101     {
102         cout << "v3为空!" << endl;
103     }
104     else
105     {
106         cout << "V3不为空!" << endl;
107         cout << "v3的容量为: " << v3.capacity() << endl;
108         cout << "v3的大小为:" << v3.size() << endl;
109 
110     }
111     //重新指定大小
112     v3.resize(15,10);//利用重载的版本 可以指定默认填充的值,参数2
113     printVector3(v3); //如果重新指定的过长 默认用0填充新的位置
114 
115 
116     v3.resize(5);
117     printVector3(v3); //如果重新指定的过短,就会删除超出的部分
118 
119 }
120 
121 
122 //打印
123 void printVector4(vector<int>& v4)
124 {
125     for (vector<int>::iterator it = v4.begin(); it != v4.end(); it++)
126     {
127         cout << *it << " ";
128     }
129     cout << endl;
130 }
131 
132 //vector 插入和删除
133 void test04()
134 {
135     vector <int>v4;
136     //尾插
137     v4.push_back(10);
138     v4.push_back(20);
139     v4.push_back(30);
140     v4.push_back(40);
141     v4.push_back(50);
142 
143     //遍历
144     printVector4(v4);
145 
146     //尾删
147     v4.pop_back();
148     printVector4(v4);
149 
150     //插入第一个  第一个参数就是迭代器
151     v4.insert(v4.begin(), 100);
152     printVector4(v4);
153 
154     //插入两个 55 在开头
155     v4.insert(v4.begin(), 2, 55);
156     printVector4(v4);
157 
158     //删除 开头删除了第一个 参数 迭代器
159     v4.erase(v4.begin());
160     printVector4(v4);
161 
162     //删除 区间方式   类似 清空
163     //v4.erase(v4.begin(), v4.end()); // 全部删除
164     //printVector4(v4);
165 
166     //清空
167     v4.clear();
168     printVector4(v4);
169 }
170 
171 
172 //vector数据存取
173 void test05()
174 {
175     vector<int>v5;
176     for (int i = 0; i < 10; i++)
177     {
178         v5.push_back(i);
179     }
180 
181     //利用[]的方式访问数组中的元素
182     for (int i = 0; i < v5.size(); i++)
183     {
184         cout << v5[i] << " ";
185     }
186     cout << endl;
187 
188     //利用at方式访问元素
189     for (int i = 0; i < v5.size(); i++)
190     {
191         cout << v5.at(i) << " " ;
192     }
193     cout << endl;
194 
195     //返回第一个元素
196     cout << "第一个元素为:" << v5.front() << endl;
197 
198     //获取最后一个元素
199     cout << "最后一个元素为:" << v5.back() << endl;
200 }
201 
202 
203 //打印
204 void printVector6(vector<int>& v6)
205 {
206     for (vector<int>::iterator it = v6.begin(); it != v6.end(); it++)
207     {
208         cout << *it << " ";
209     }
210     cout << endl;
211 }
212 
213 //vector互换容器
214 //1.基本使用
215 void test06()
216 {
217     vector<int>v6;
218     for (int i = 0; i < 10; i++)
219     {
220         v6.push_back(i);
221     }
222     cout << "交换前打印!!!" << endl;
223     printVector6(v6);
224 
225     vector<int>v7;
226 
227     for (int i = 10; i > 0; i--)
228     {
229         v7.push_back(i);
230     }
231     printVector6(v7);
232 
233 
234     cout << "交换后:!!!!!!!!!!" << endl;
235 
236     v6.swap(v7);
237     printVector6(v6);
238     printVector6(v7);
239 
240 }
241 
242 //2.实际用途
243 //巧用swap可以收缩内存空间
244 void test07()
245 {
246     vector<int>v;
247     for (int i = 0; i < 100000; i++)
248     {
249         v.push_back(i);
250     }
251 
252     cout << "第一次v的容量为:" << v.capacity() << endl;
253     cout << "第一次v的大小:" << v.size() << endl;
254 
255 
256     v.resize(3);  //重新指定大小
257     cout << "第二次v的容量为:" << v.capacity() << endl;
258     cout << "第二次v的大小:" << v.size() << endl;
259 
260     //巧用swap收缩内存 // vector<int>(v) 匿名对象执行完就被系统回收
261     vector<int>(v).swap(v);
262 
263     cout << "第三次v的容量为:" << v.capacity() << endl;
264     cout << "第三次v的大小:" << v.size() << endl;
265 }
266 
267 
268 //预留空间 reserve(int len);
269 void test08()
270 {
271     vector<int>v8;
272     //利用reserve预留空间
273     v8.reserve(100000);   
274 
275     int num = 0;  //统计开辟次数
276     int* p = NULL;
277     for (int i = 0; i < 10000; i++)
278     {
279         v8.push_back(i);
280 
281         if (p != &v8[0])
282         {
283             p = &v8[0];
284             num++;
285         }
286     }
287     cout << "num = " << num << endl;
288 }
289 
290 
291 int main()
292 {
293     test01();
294 
295     test02();
296 
297     test03();
298 
299     test04();
300 
301     test05();
302 
303 
304     test06();
305     test07();
306 
307     test08();
308 
309     system("pause");
310     return 0;
311 }

 

标签:容器,cout,++,back,C++,vector,v4,push
来源: https://www.cnblogs.com/Bytezero/p/15140515.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有