Skip to Main Content
C++程序设计:原理与实践(进阶篇)(原书第2版)
book

C++程序设计:原理与实践(进阶篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced content levelIntermediate to advanced
450 pages
10h 35m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(进阶篇)(原书第2版)

26.3.2 单元测试

好吧,已经说得够多了!让我们来尝试一个实际的例子吧:测试一个二分搜索。下面的描述来自ISO标准(见25.3.3.4节):

要求:[first,last)之间所有元素e按表达式e<value和!(value<e)或comp(e,value)和!comp(value,e)划分。并且,对[first,last)之间所有元素e来说,e<value意味着!(value<e),comp(e,value)意味着!comp(value,e)。

返回:如果位于区间[first,last)内的一个迭代器i满足如下条件:!(*i<value)&&!(value<*i)或comp(*i,value)==false&&comp(value,*i)==false,函数返回真。

复杂度:最多log(last-first)+2次比较。

没有经验的人很难读懂上述形式化定义(好吧,只是半形式化的)。但是如果你已经真正完成了本章开头我们所强烈建议的二分搜索编程练习的话,你就会对如何实现二分搜索并测试它有一些很好的想法。这个(标准)版本接受三个参数:两个前向迭代器(见15.10.1节)和一个数值。如果数值出现在两个迭代器限定的范围内,函数就返回真。两个迭代器必须对应一个有序序列。比较(排序)操作通过运算符<完成。我们可以为binary_search增加一个参数——比较操作函数,这样就可以用用户指定的任意比较操作进行二分搜索了,我们将此作为练习。

在这里,我们只处理编译器不能发现的错误。因此,类似下面的问题不再考虑: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

Anton Kovalyov
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9787111562528