码迷,mamicode.com
首页 > 编程语言 > 详细

动态数组 - vector

时间:2019-04-21 14:42:24      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:push   方式   div   ==   ++   std   最好   code   内存释放   

 

 1 #include <iostream>
 2 #include <vector>  // 头文件
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     vector<int> v;  // 定义一个动态数组 vector<T> v;
 8     
 9     // 几种初始化方式:
10     vector<int> v1(7); // v1中会含有7个元素size() == 7, 都赋值为0
11     vector<int> v2(v1);  // v2将成为v1的一个拷贝
12     vector<int> v3 = {1, 2, 3, 4, 5}; // 用列表初始化
13     vector<int> v4(v3.begin(), v3.end()); // 用迭代器初始化
14     vector<int> v5(7, 1); // 指定值初始化,v5中将有7个值为1的元素
15    
16     for (int i = 1; i <= 10; i++)
17         v.push_back(i * i);  // 插入元素到数组最后
18     v.insert(v.end(), v3.begin(), v3.end()); // 在v的最后插入v3中的所有元素
19     for (int i = 0; i < v.size(); i++)
20         cout << v[i] << " "; // 可用索引访问元素 (直接通过索引赋初值无效!)
21     cout << endl;
22     
23     
24     v.clear();  // 只是把size()设置为0, 但是实际内存并不会回收!不要想当然
25     v.shrink_to_fit(); // 再加上这句即可释放内存
26     // 老式回收内存的方法(利用了swap()和局部变量内存释放):
27     {
28         vector<int> x;
29         v.swap(x);
30     }
31     
32     // 二维动态数组
33     vector<vector<int> > v2d;
34     // 注意vector<int>后最好加一个空格再加> 否则若未开启C++11会解释为>>运算符
35     for (int i = 0; i < 5; i++)
36         v2d.push_back(vector<int>()); // vector<int>() 是调用无参构造函数
37     for (int i = 0; i < v2d.size(); i++)
38         for (int j = 0; j < 5; j++)
39             v2d[i].push_back(i * j);
40     for (int i = 0; i < v2d.size(); i++)
41         for (int j = 0; j < v2d[i].size(); j++)
42             cout << v2d[i][j] << " ";
43         cout << endl;
44     return 0;
45 }

 

动态数组 - vector

标签:push   方式   div   ==   ++   std   最好   code   内存释放   

原文地址:https://www.cnblogs.com/AntonLiu/p/10744959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!