關於C++中的resize()函數在vector上的使用


一、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;
}

原因

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM