August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
对于一个容器,可获得一些指向有用元素的迭代器:begin()和end()就是最好的例子。此外,很多算法也都返回迭代器。例如,标准库算法find在一个序列中查找一个值,返回指向找到元素的迭代器:
类似于很多标准库搜索算法,find返回end()来指示“未找到”。Has_c()还有一个更短的等价版本:
一个更有意思的练习是在字符串中查找一个字符出现的所有位置。我们可以返回一个string迭代器的vector,其中保存出现位置的集合。返回一个vector是很高效的,因为vector提供了移动语义(参见5.2.1节)。假定希望修改找到的位置,就应传递一个非const字符串:
这段代码用一个常规的循环遍历字符串,每个循环步使用++运算符将迭代器p向前移动一个元素,并使用解引用运算符*查看元素值。我们可以这样来测试find_all():
find_all()调用可以图示如下。
迭代器和标准库算法在所有标准库容器上的工作方式都是相同的(前提是它们适用于这种容器)。因此,我们可以泛化find_all(): ...
Read now
Unlock full access