vector的resize(new_size,new_element)方法
一直以来对vector的resize(new_size, new_element)方法有个很深的误解,以至于程序运行结果不对却怎么也检查不出来。原以为该方法是清空vector内的原有元素,然后添加指定个数的新元素,最后却发现不是这样的。
运行下面程序:
1 void print( vector<int> &a ) 2 { 3 int i; 4 for ( i=0; i<a.size(); i++ ) 5 { 6 printf( "%d ", a[i] ); 7 } 8 printf("\n"); 9 } 10 11 void main() 12 { 13 vector<int> a; 14 a.push_back(1); 15 a.push_back(2); 16 a.push_back(3); 17 a.push_back(4); 18 print( a ); 19 20 a.resize( 3, 777 ); 21 print( a ); 22 23 a.resize( 3, 888 ); 24 print( a ); 25 26 a.resize( 10, 999 ); 27 print( a ); 28 }
运行结果为:
可以看出,resize(new_size, new_element)方法的实际作用是:
1、当new_size小于vector原来的size时,多余的元素会被删除;
2、当new_size等于vector原来的size时,什么也不做;
3、当new_size大于vector原来的size时,不足的部分将用new_element填充,而原有的元素并不会变化;