第十三章 13.3节练习
2014-09-12 17:40
127 查看
练习13.29
解释swap(HasPtr&, HasPtr&)中对swap的调用不会导致递归循环。
解答:
这里swap重载了,在HasPtr中的swap调用中,不会再去调用自身。
因为,在HasPtr的swap函数中使用的是标准库中的swap函数。
练习13.30
为你的类值版本的HasPtr编写swap函数,并测试它。为你swap函数添加一个答应语句,指出函数什么时候执行。
解答:
练习13.31
为你的HasPtr类定义一个<运算符,并定义一个HasPtr的vector。为这个vector添加一些元素,并对它执行sort。注意何时会调用swap。
解答:
在我的执行结果里面,没有调用到swap(),不知道题目里面问“何时会调用swap”是什么意思。
练习13.32
类指针的HasPtr版本会从swap函数受益吗?如果会,得到了什么益处?如果不是,为什么?
解答:
这个会的,使用指针不用分配新的空间出来,节省了分配空间的时间。
同样,对类中使用inline也能作为优化的一种手段。
具体可以查看458页的一些内容(优化部分说的也不是很多)。
解释swap(HasPtr&, HasPtr&)中对swap的调用不会导致递归循环。
解答:
inline void swap(HasPtr &lhs, HasPtr &rhs){ using std::swap; swap(lhs.ps, rhs.ps); swap(lhs.i, rhs.i); }这是swap的实现,这里不会产生递归调用。
这里swap重载了,在HasPtr中的swap调用中,不会再去调用自身。
因为,在HasPtr的swap函数中使用的是标准库中的swap函数。
练习13.30
为你的类值版本的HasPtr编写swap函数,并测试它。为你swap函数添加一个答应语句,指出函数什么时候执行。
解答:
inline void swap(HasPtr &lhs, HasPtr &rhs) { std::cout << "call HasPtr's swap function." << std::endl; using std::swap; swap(lhs.ps, rhs.ps); // swap the pointers, not the string data swap(lhs.i, rhs.i); // swap the int members }
HasPtr f(HasPtr hp) // HasPtr passed by value, so it is copied { HasPtr ret = hp; // copies the given HasPtr HasPtr cp; swap(ret, cp); // will call HasPtr::swap // process ret return ret; // ret and hp are destroyed }
练习13.31
为你的HasPtr类定义一个<运算符,并定义一个HasPtr的vector。为这个vector添加一些元素,并对它执行sort。注意何时会调用swap。
解答:
</pre><pre name="code" class="cpp">bool HasPtr::operator<(const HasPtr &rhs) { <span style="white-space:pre"> </span>if (*ps > *(rhs.ps)){ <span style="white-space:pre"> </span>return false; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>if (i > rhs.i){ <span style="white-space:pre"> </span>return false; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>return true; }
在我的执行结果里面,没有调用到swap(),不知道题目里面问“何时会调用swap”是什么意思。
练习13.32
类指针的HasPtr版本会从swap函数受益吗?如果会,得到了什么益处?如果不是,为什么?
解答:
这个会的,使用指针不用分配新的空间出来,节省了分配空间的时间。
同样,对类中使用inline也能作为优化的一种手段。
具体可以查看458页的一些内容(优化部分说的也不是很多)。
相关文章推荐
- 《Python核心编程》第二版第405页第十三章练习 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第405页第十三章练习 续三 -Python核心编程答案-自己做的-
- 【学习C++】C++ Primer Plus (第六版)第十三章编程练习1-4
- c++ primer plus(第6版)中文版 第十三章编程练习答案
- 13.3节 交换操作练习
- C primer plus(第五版)编程练习第十三章
- 第十三章、学习 Shell Scripts 简单的 shell script 练习
- 第十三章 带参方法 上机练习4 模拟账户查询,实现取款取款
- c primer plus第十三章编程练习答案(纯手打欢迎指错)
- 《Python核心编程》第二版第405页第十三章练习 续一 -Python核心编程答案-自己做的-
- 《C与指针》第十三章练习
- 第十三章 13.1.1节练习
- 第十三章 编程练习
- 《Python核心编程》第二版第407页第十三章练习 续五 -Python核心编程答案-自己做的-
- C Primer Plus 第十三章 编程练习 1-13题
- 第十三章 13.1.2节练习
- 第十三章 13.1.4节练习
- 第十三章 13.1.3节练习
- 第十三章 13.2.1节练习
- 第十三章 13.6.1节练习