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 }