vector 的resize与reserve

最近遇到一个坑,简单说来是resize与reserve的功能混淆了。

如下:

如果调用resize的化,编译会出错,如果给Text提供默认构造函数,则可以编译通过,最终输出的结果为10.

如果调用reserve,无编译错误,输出为0。

#include <iostream>
using namespace std;
const int max_size = 10;
struct Text {
  Text(const int size): m_size(size){
  };
  int m_size;
};
int main() {
  vector<Text> array;
  // array.resize(max_size);
  array.reserve(max_size);
  cout<< array.size()<< endl;
  return 0;
}

 

 

posted @ 2013-07-04 11:01  westfly  阅读(225)  评论(0编辑  收藏  举报