练习9.35:解释一个vector的capacity和size有何区别。
解答:
容器的size是指它已经保存的元素的数目;而capacity则是在不分配新的内存空间的前提下它最多可以保存多少元素。
练习9.36:一个容器的capacity可能小于它的size吗?
解答:
不可以,capacity只能大于或等于size。
练习9.37:为什么list或者array没有capacity成员函数?
解答:
list 的元素不是连续存储的;array有固定的大小,因此不能添加元素。
练习9.38:编写程序,探究在你的标准库实现中,vector是如何增长的。
解答:是成倍的增长的。
#include<iostream>
#include<string>
#include<vector>
int main()
{
std::vector<std::string> svec;
std::string word;
while(std::cin>>word)
{
svec.push_back(word);
std::cout<<svec.capacity()<<std::endl;
}
return 0;
}
练习9.39:解释下面的程序片段做了什么:
vector<string> svec;
svec.reserve(1024);
string word;
while(cin>>word)
svec.push_back(word);
svec.resize(svec.size() + svec.size()/2);
解答:
vector<string> svec;
svec.reserve(1024); // 将capacity设置为 1024
string word;
while (cin >> word) // 连续输入单词
svec.push_back(word);
svec.resize(svec.size()+svec.size()/2); // 设置svec的capacity为3/2大小的size
练习9.40:如果上一题中的程序读入了256个词,在resize之后的容器的capacity可能是多少?如果读入了512个、100个或1048个呢?
解答: