《编程原本 》一2.5 动作

简介: 本节书摘来自华章出版社《编程原本 》一书中的第2章,第2.5节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.5 动作

在算法里,变换f经常被用在如下形式的语句中
x = f(x);
应用变换去改变对象的状态,就定义了相应对象上的一个动作(action).变换和动作之间有直接的对偶关系,可以基于变换来定义动作,反之亦然:void a(T& x) { x = f(x); } //从变换定义动作以及T f(T x) { a(x); return x; } //从动作定义变换

虽然存在这种对偶关系,但有时独立的实现效率更高,这种情况下就应该分别提供动作和变换.举例说,如果在很大的对象上定义变换,但是只修改整个状态中很小的一部分,采用动作定义就可能大大提高效率.

练习2.6 请用动作的方式重写本章的各个算法.
项目2.1检查环路的另一种方式是反复检查一个不断更新的元素是否与另一个保存着的元素相等,与此同时按一定间隔更新那个保存的元素.Sedgewicketal.[1982],Brent[1980]和Levy[1982]讨论了这种想法和其他想法.请为轨道分析写一些算法,针对不同应用比较它们的性能,并为选择适当的算法提出一组建议.

相关文章
|
20天前
|
存储 安全 编译器
C++学习过程中的一些值得注意的小点(1)
C++学习过程中的一些值得注意的小点(1)
|
12月前
|
关系型数据库 MySQL API
被无视的小细节
被无视的小细节
52 0
|
开发工具
彻底搞清游戏开发中的循环逻辑
循环是游戏开发中一定会用到的逻辑,不论是你想控制移动,或者进行遍历,亦或者不停的去执行某一段逻辑,都需要使用循环。那么对于循环的使用你彻底了解了吗?今天这篇文章就帮助你彻底的弄懂微信小游戏开发中的循环的用法。
139 0
按键精灵设计的简单的重复输入动作
按键精灵设计的简单的重复输入动作
92 0
|
存储 安全 程序员
程序员思维模式-主调试循环
仅通过测试进行验证基本上是在仪器上驾驶飞机,而不是能够向外看挡风玻璃。视觉飞行和肌肉记忆飞行与仪器相结合,既高效又安全。你不太可能误撞山。 当你已经编码了十多年时,可能很难重新捕捉初学者的思想,并向新手解释如何像程序员一样思考。我记得在大学里,当我编码的时间相对较短时,有一件事在我的脑海中结晶了编写代码背后的思维过程——你可以称之为程序员哲学。我正在帮助一个朋友完成计算机
程序员思维模式-主调试循环
|
存储 安全 程序员
程序员思维模式 - 主调试循环
> 仅通过测试进行验证基本上是在仪器上驾驶飞机,而不是能够向外看挡风玻璃。视觉飞行和肌肉记忆飞行与仪器相结合,既高效又安全。你不太可能误撞山。 当你已经编码了十多年时,可能很难重新捕捉[初学者的思想](https://en.wikipedia.org/wiki/Shoshin),并向新手解释如何像程序员一样思考。我记得在大学里,当我编码的时间相对较短时,有一件事在我的脑海中结晶了编写代码背后的思维过程——你可以称之为程序员哲学。我正在帮助一个朋友完成计算机科学101任务。他们对编码完全陌生。 他们从头到尾在纸上写了一个完整的解决方案——也许是100行代码。然后,他们将其全部输入到文本编辑器
112 0
|
程序员
《编程原本 》一1.4 过程
本节书摘来自华章出版社《编程原本 》一书中的第1章,第1.4节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
908 0
|
人工智能 JavaScript C++
《编程原本 》一3.4 处理特殊情况的过程
本节书摘来自华章出版社《编程原本 》一书中的第3章,第3.4节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1121 0
|
机器学习/深度学习 人工智能 JavaScript
《编程原本 》一3.3 程序变换
本节书摘来自华章出版社《编程原本 》一书中的第3章,第3.3节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1155 0