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填充,而原有的元素并不会变化;

 

posted on 2013-06-01 10:45  文森vincent  阅读(380)  评论(0编辑  收藏  举报

导航