一、resize()函數使用方法
#include<bits/stdc++.h>
using namespace std;
vector<int> v1;
vector<bool> v2;
vector<vector<int> > v3;
int main(){
int n = 10;
v1.resize(n+1);
v2.resize(n+1);
v3.resize(n+3);
for(int i = 0; i < n; i++){
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
v1.push_back(a);
v3[b].push_back(c);
printf("v1[%d] = %d, v3[%d] = %d\n", i, v1[i], b, v3[b][0]);
}
return 0;
}

原因
- 使用resize(n, v),這個函數會把空間控制成n個,然后這n個空間里面的會賦值為v,如果沒有默認賦值為0。如上圖所示這里單個數組,使用這個函數后,已經賦值完成,所以后面使用push_back()函數,插值會插不進入,輸出的結果是前面已經賦值的n個0,這也是為啥會出現這樣的結果。如果是二維的,它相當於開辟了n個vector向量,而這n個向量沒有被開辟空間賦值,所以可以插入。