第十三章 13.5节练习
2014-09-12 23:29
155 查看
练习13.39
编写你自己版本的strVec,包括自己版本的reserve、capacity(参见9.4节,第318页)和resize(参见9.3.5节,第314也)
解答:
同样,这里的参考代码可以从书封底的网页中获得。
可以先自行实现,然后在去对比已经实现好的。
再加上调试,可能能获得更多。
练习13.40
为你的StrVec类添加一个构造函数,让它接受一个initializer_list<string>参数。
解答:
练习13.41
在push_back中,我们为什么在construct调用中使用前置递增运算?
如果使用后置递增运算的话,会发生什么?
解答:
如果使用前置递增运算符就会让地址先增加1,然后在进行移动构造。
这样在逻辑上是错误,也会造成程序产生段错误。
练习13.42
在你的TextQuery和QueryResult类(参见12.3节,第431页)中用你的StrVec类代替vector<string>,以此来测试你的StrVec类。
解答:
这个…… 先略过吧。
StrVec的整体设计,其实就和vector很相似了,可以直接进行替换。
练习13.43
重写free成员,用for_each和lambda(参见10.3.2节,第346页)来代替for循环destory元素。你更倾向于哪种实现,为什么?
解答:
练习13.44
编写标准库string类的简化版本,命名为String。你的类应该至少有一个默认构造函数和一个接受C分隔字符串指针参数的构造函数。
使用allocator为你的String类分配所需内存。
解答:
这里的实现可以将StrVec进行简化,其中需要注意的就是reallocate应该以什么样的方式进行增长。
编写你自己版本的strVec,包括自己版本的reserve、capacity(参见9.4节,第318页)和resize(参见9.3.5节,第314也)
解答:
同样,这里的参考代码可以从书封底的网页中获得。
可以先自行实现,然后在去对比已经实现好的。
再加上调试,可能能获得更多。
练习13.40
为你的StrVec类添加一个构造函数,让它接受一个initializer_list<string>参数。
解答:
inline StrVec::StrVec(std::initializer_list<std::string> il) { // call alloc_n_copy to allocate exactly as many elements as in il auto newdata = alloc_n_copy(il.begin(), il.end()); elements = newdata.first; first_free = cap = newdata.second; }将书中给出的是实现粘出来。
练习13.41
在push_back中,我们为什么在construct调用中使用前置递增运算?
如果使用后置递增运算的话,会发生什么?
解答:
如果使用前置递增运算符就会让地址先增加1,然后在进行移动构造。
这样在逻辑上是错误,也会造成程序产生段错误。
练习13.42
在你的TextQuery和QueryResult类(参见12.3节,第431页)中用你的StrVec类代替vector<string>,以此来测试你的StrVec类。
解答:
这个…… 先略过吧。
StrVec的整体设计,其实就和vector很相似了,可以直接进行替换。
练习13.43
重写free成员,用for_each和lambda(参见10.3.2节,第346页)来代替for循环destory元素。你更倾向于哪种实现,为什么?
解答:
auto SteVec::free = [&]() -> void{ if(elements){ for_each(elements, cap, alloc.destory); alloc.deallocate(elements, cap - elementd); } }
练习13.44
编写标准库string类的简化版本,命名为String。你的类应该至少有一个默认构造函数和一个接受C分隔字符串指针参数的构造函数。
使用allocator为你的String类分配所需内存。
解答:
这里的实现可以将StrVec进行简化,其中需要注意的就是reallocate应该以什么样的方式进行增长。
相关文章推荐
- 《Python核心编程》第二版第407页第十三章练习 续四 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第407页第十三章练习 续六 -Python核心编程答案-自己做的-
- 现代软件工程 第十三章 【软件测试】 练习与讨论
- 第十三章yum仓库的练习
- 《Erlang 程序设计》练习答案 -- 第十三章 并发程序中的错误
- (一四五)第十三章编程练习
- 现代软件工程 第十三章 【软件测试】 练习与讨论
- 第十三章 13.1.6节练习 & 13.2节练习
- 第十三章 13.2.2节练习
- 《JAVA从入门到精通》(第3版)第十三章实践与练习第一题
- 第十三章练习
- C++ Primer Plus第六版 第十三章 编程练习答案
- 王爽《汇编语言》第十三章所有练习解答
- C Primer Plus (第五版) 第十三章 文件输入/输出 编程练习
- 第十三章 简单的 shell script 练习
- Java-Java编程思想第四版 第十三章 练习
- 第十三章编程练习(3)
- 第十三章编程练习(1)
- C++ Primer 13.5节练习
- 现代软件工程 练习与讨论 第十三章 软件测试