相信很多小伙伴对于各种算法函数,比如 find()、merge()、sort() 等都有一定的了解以及使用。
但是,不知有没有人发现,每个算法函数都至少要用一对迭代器来指明作用区间,并且为了实现自己的功能,每个函数内部都势必会对指定区域内的数据进行遍历操作。
举几个例子:
find() 函数会对指定区域的数据逐个进行遍历,确认其是否为要查找的目标元素;
merge() 函数内部也会分别对 2 个有序序列做逐个遍历,从而将它们合并为一个有序序列;
sort() 函数在对指定区域内的元素进行排序时,其底层也会遍历每个元素。
事实上,虽然这些算法函数的内部实现我们不得而知,但无疑都会用到循环结构。可以这么说,STL 标准库中几乎所有的算法函数,其底层都是借助循环结构实现的。
在此基础上,由于 STL 标准库使用场景很广,因此很多需要手动编写循环结构实现的功能,用 STL 算法函数就能完成。
再举个例子:
#include <iostream> // std::cout
#include <algorithm> // std::for_each
#include <string> // std::string
#include <vector> // std::vector
#include <functional>
using namespace std;
class Address {
public:
Address(string url) :url(url) {}