1.reserve和resize什么区别
、resize(n):调整容器的长度大小,使其能容纳n个元素。如果n小于容器当前的size,则删除多出来的元素,否则,添加采用值初始化的元素。
reserve(n,t):多一个参数t,将所有新添加的元素初始化为t。
2、reserve(n):预分配n个元素的存储空间。
capacity:容量(容器当前拥有的元素个数)
size:长度(容器在必须分配新存储空间之前可以存储的元素总数)
3、resize->size:调用resize(n),容器的size即为n。
reserve->capacity:调用reserve(n)。若capacity<n,重新分配内存;若capacity>n,不变。
4、调用resize(),所有空间都已经被初始化,可直接访问。
调用reserve(),预分配出的空间没有被初始化,所以不可访问。
2.auto:const &可以推断出来吗
如果初始化表达式是引用,则去除引用语义;
auto &d = b;//此时c的类型才为int&
如果初始化表达式为const或volatile(或者两者兼有),则除去const/volatile语义。
如果auto关键字带上&号,则不去除const语意:
const int a2 = 10;
auto &b2 = a2;//因为auto带上&,故不去除const,b2类型为const int
b2 = 10; //非法
初始化表达式为数组时,auto关键字推导类型为指针;若表达式为数组且auto带上&,则推导类型为数组类型。
函数或者模板参数不能被声明为auto
时刻要注意auto并不是一个真正的类型。
auto仅仅是一个占位符,它并不是一个真正的类型,不能使用一些以类型为操作数的操作符,如sizeof或者typeid。
cout << sizeof(auto) << endl;//错误
cout << typeid(auto).name() << endl;//错误
3.常用的库函数:
1.atoi(字符串.c_str());字符串=>数字;
string s=“123”
stringstream sstr(s);
int x;
sstr>>x; //注意:stringstream都放在前面
数字=》字符串
stringstream sstr;
string str;
double x=32.23;
sstr<<x;
sstr>>x;