- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CPrimer(第4版)习题解答_第九章
第九章 顺序容器1.解释下列初始化,指出哪些是错误的,为什么?int ia[7] = { 0, 1, 1, 2, 3, 5, 8 };string sa[6] = {“Fort Sunter”, “Manassas”, “Perryville”, “ Vicksburg”, “Meridian”, “Chancellorsville” };(a) vectorstring svec( sa, sa+6 );(b) listint ilist( ia + 4, ia + 6 );(c) vectorint ivec( ia, ia + 8 );(d) liststring slist ( sa + 6, sa );(c) 错误,初始化迭代器的终止指针访问数组越界。(d) 错误,初始化容器的迭代器起始点和终止点指定错误,顺序反了。2.创建和初始化一个vector对象有4种方式,为每种方式提供一个例子,并解释每个例子生成的vector对象包含什么值。int ia[3] = { 1, 2, 3 };(1) vectorint ivec1( 3 ); // 默认初始化, 内容为3个0(2) vectorint ivec2( ia, ia+3); // 把数组ia里的值复制到 ivec2中(3) vectorint ivec3 ( ivec2 ); // 用ivec2来初始化 ivec3(4) vectorint ivec4 ( 3, 6 ); // 将ivec4初始化为3个63.解释复制容器对象的构造函数和使用两个迭代器的构造函数之间的差别。前者的构造函数将一个对象的全部元素复制到另一个容器对象里,而且要求两个对象的类型和元素的类型都相同;后者可以将一个容器初始化为另一个容器的子序列,而且不要求两个容器的类型是同类型的。4.定义一个list对象来存储deque对象,该对象存放int 类型的元素。list dequeint ilist;5.为什么我们不可以使用容器来存储iostream对象?因为iostream对象不支持复制和赋值操作。6.假设有一个名为Foo的类,这个类没有定义默认构造函数,但提供了需要一个int型参数的构造函数。定义一个存放Foo的list对象,该对象有10个元素。listFoo Flist( 10, 1 );7.下面的程序错在哪里?如何改正?listint lst1;listint::iterator iter1 = lst1.begin(), iter2 = lst1.end();while ( iter1 iter2 ) /*…*/错在while循环里的条件表达式中使用了<操作符,因为list容器的迭代器不支持关系操作符,可改为 iter1 != iter2 8.假设vec_iter 绑定到vector对象的一个元素,该vector对象存放string类型的元素,请问下面的语句实现什么功能?it ( vec_iter-empty() ) //…判断vec_iter所指向的vector元素是否为空字符串。9.编写一个循环将list容器的元素逆序输出。listint ilist( 10, 1 );listint::iterator it = ilist.end();--it;for ( ; it !=ilist.begin(); --it )cout *it endl;10.下列迭代器的用法哪些是错误的?const vector int ivec ( 10 );vector string svec ( 10 );list int ilist( 10 );(a) vectorint::iterator it = ivec.begin();(b) listint::iterator it = ilist.begin() + 2;(c) vectorstring::iterator it = svec[0];(d) for ( vectorstring::iterator it = svec.begin(); it != 0; ++it ) //…(b)错误,list的迭代器不支持算术运算。(a) 错,ivec.begin() 返回的是const vectorint的迭代器,不能用来初始化vectorint的迭代器。(c) 错误,迭代器不支持用操作符来初始化。(d) 错误,it与0进行比较会产生运行时错误。11.要标记出有效的迭代器范围,迭代器需满足什么约束?first和last须指向同一个容器中的元素或超出末端的下一位置。last不能位于first之前。12.编写一个函数,其形参是一对迭代器和一个int型数值,实现在迭代器标记的范围内寻找该int型数值的功能,并返回一个bool结果,以指明是否找到
文档评论(0)