vector
头文件
#include <vector>
vector的初始化
1.vector a;
默认初始化,a为空
2.vector a(10);
定义10个整形元素的向量,初值为0
3.vector a(10, 6);
定义10个整形元素,且初值全为6
4.vector b(a);
用a来定义b,整体复制性赋值;(将a赋值给b)
5.vector b(a.begin(), a.begin() + 4);
定义了b值为a中第0个到第3个元素
6.int a[5] = {1, 2, 3, 4, 5}; vector a(b, b + 5);
从数组中获取初值。
vector的函数
(1)赋值:a.push_back(100);
通过使用push_back()
对vector
在尾部插入一个新的元素, vector
会自动的向容器分配新的内存空间。
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
for (int i = 0; i < 3; i ++ ) cout << v[i] << " ";
return 0;
}
结果:1 2 3
(2) 用auto取地址赋值
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int> a(10);
for (auto &it : a) cin >> it;
for (auto it : a) cout << it << ' ';
return 0;
}
输入: 1 2 3 4 5 0 9 8 7 6
输出: 1 2 3 4 5 0 9 8 7 6
(3) for (auto [x, y] : a ) 直接输出first和second
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
int main(){
vector<PII> a;
for (int i = 1; i <= 10; i ++ )
a.push_back({i + 10, i});
cout << a.size() << endl;
for (auto [x, y] : a) cout << x << ' ' << y << endl;
return 0;
}
输出结果
10 11 1 12 2 13 3 14 4 15 5 16 6 17 7 18 8 19 9 20 10
如果初始化的时候写为vector<PII> a(10)
, 则,a.size()
的结果为20,同时,先输出10行两个0,然后在输出我们的结果