C++primer(第五版)9.4节练习答案

来源:互联网 发布:低通滤波算法 matlab 编辑:程序博客网 时间:2024/05/12 09:02

练习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设置为 1024string 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个呢?

解答:



0 0
原创粉丝点击