最近遇到一个坑,简单说来是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; }