泛型算法本身不会执行容器的的操作,他们只会运行于迭代器上,执行迭代器的操作。所以算法永远不会改变底层容器的大小,但可能改变容器中元素的值,也可能在容器中移动元素,但永远不会直接添加和删除元素。但标准库定义了一类特殊的迭代器,称为插入迭代器,这种迭代器赋值是,他们会在底层容器上执行插入操作。因此算法可以利用插入迭代器完成向容器中添加元素的操作,但算法本身永远不会做这样的操作。
大多数算法都定义在头文件algorithm中,numeric中也定义了一组数值泛型算法
1. 只读算法
只读取元素值,不改变元素,对于这类算法,通常最好使用cbegin()和cend()
find: auto result = find(vec.cbegin(), vec.cend(), val); //在容器中查找指定的元素值,结果返回指向查找到的元素的迭代器,如果未找到,返回vec.end() (起始迭代器,终止迭代器,查找的元素值)
count: int num = count(vec.cbegin(), vec.cend(), val); /