Vector(动态数组)
头文件
初始化
- 定义一个vector 未初始化 输出 0
- 定义一个长度为3 的vector 未初始化 输出 0
- 定义一个长度为10 的vector 每个数赋值为 3
- 将向量b中从下标 0 1 2(共三个)的元素赋值给a ,a 的类型为int型
1
| vector<int> a(b.begin(),b.begin+3);
|
- 从数组中获得初始值
1 2
| int b[7] = {1,2,3,4,5,6,7} vector<int> a(b,b+7);
|
- 输出
1 2 3 4
| for(auto x:a) { cout << x << " "; }
|
size()
resize()
empty()
front() 和 back()
倍增思想
C++ 系统为某一程序分配空间的所需时间,与空间大小无关,与申请次数有关如果申请一个空间为1000 和 空间 为1 申请1000 次的所需时间差别是很大的,申请次数越多,越耗时间。
clear()
支持比较运算
比较操作 == , != , < , > , <= , >=
1 2 3 4 5 6 7 8 9 10
| int main() { vector<int> a(4,3),b(3,4); if(a < b) cout << "a < b" << endl; }
|
push_back() 和 pop_back()
1 2 3 4
| a.push_back(5);
a.pop_back();
|
begin()和end()
1 2 3
| a.begin(); a.end(); 通常与for循环结合使用
|
遍历vector的三种方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| nt main() { vector<int> a; for(int i=0;i<10;i++) { a.push_back(i); } for(int i=0;i<a.size();i++) { cout << a[i] << " " ; } cout << endl; for(auto i=a.begin();i!= a.end();i++) { cout << *i << ' '; } cout << endl; for(auto x:a) { cour << x << " "; } cout << endl; return 0; }
|
结合算法erase() reverse()
1 2 3 4 5 6 7 8 9 10 11 12
| #include<iostream> #include<vector> #include<algorithm> int main() { a.erase(b); a.erase(b,e); vector<int> a={1,2,3,4,5}; reverse(a.begin(),a.end()); }
|