一、泛型算法的概念及特点
泛型算法其实就是被与容器类型无关的、广泛使用的一种计算方法。使用是引用头文件algorithm
.
最常见的有: - 查找 - 重排元素(按一定规则排序) - 删除 - 替换
泛型算法特点如下: - 使用迭代器作为输入,使算法独立于操作对象 - 算法依赖于元素类型的操作
对于第二点,我们以find
为例子说明算法如何依赖于元素,只要元素支持判等符号,那么这个算法就能实现。已知支持判等(==)的元素类型有:int
double
string
。如果说,一个元素类型是C风格字符串char *,那就不能使用这个算法了,因为没有定义判等(==)操作。
附录A有详细说明,大致内容如下:
算法永远不会执行容器操作,它运行在迭代器上。也就是永远不会执行添加和删除元素。这样设计的原因: - 算法的通用性考虑。算法不直接操作容器元素,而是操作迭代器。对于不同数据类型就不需要重写算法了 - 迭代器的属性决定最终这个算法是只读还是可删可写
三、书中详细讲解的算法一般而言算法都是遍历整个(部分)容器,故前两参数一般都是指操作的对象集的范围。如:算法名称(vec.begin(),vec.end(),para1)
范围内查找容器中的某个元素: - 若存在指向该元素的迭代器; - 若不存在范围尾后迭代器vec.end()
例子:在vector ivec{1,2,3,4,5,6}
中查找元素7
和4
两个元素。
int main()
{
vector ivec{1,2,3,4,5,6};
auto result=find(ivec.begin(),ivec.end(),6);
if(result!=ivec.end())
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?