首页 > 试题广场 >

以下程序中,当输入6个字符后,容器的容量是多少() int

[单选题]
以下程序中,当输入6个字符后,容器的当前大小(size)是多少()
int main()
{
    vector<char> vec;
    vec.reserve(1024);
    string tmp;
    cin >> tmp;
    string::iterator it = tmp.begin();
    for(; it!=tmp.end(); it++)
    {
	vec.push_back(*it);
    }
    vec.resize(vec.size() +vec.size()/2);
    return 0;
}

  • 6
  • 9
  • 1024
  • 1536
来自于百度知道:
resize(),设置大小(size);
reserve(),设置容量(capacity);
size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。
打个比方:正在建造的一辆公交车,车里面可以设置40个座椅(reserve(40);),这是它的容量,但并不是说它里面就有了40个座椅,只能说明这部车内部空间大小可以放得下40张座椅而已。而车里面安装了40个座椅(resize(40);),这个时候车里面才真正有了40个座椅,这些座椅就可以使用了。
发表于 2018-09-15 09:48:18 回复(0)
这个题需要注意的就是reserve 和 resize这两个函数的作用,reserve改变的是容量capacity,resize改变的是size,所以一开始设置了容量为1024,这时新创建的vec的size是0,当输入6个字符后,capacity=1024,size=6, 后来resize变成了1.5倍,所以是9
发表于 2018-10-06 20:36:29 回复(0)
靠,我把reserve看成了resize。。。
发表于 2022-05-30 12:29:40 回复(1)