您当前的位置: 首页 >  算法

我什么都布吉岛

暂无认证

  • 9浏览

    0关注

    292博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++泛型算法

我什么都布吉岛 发布时间:2018-09-04 08:51:09 ,浏览量:9

一、泛型算法的概念及特点

泛型算法其实就是被与容器类型无关的、广泛使用的一种计算方法。使用是引用头文件algorithm.

最常见的有: - 查找 - 重排元素(按一定规则排序) - 删除 - 替换

泛型算法特点如下: - 使用迭代器作为输入,使算法独立于操作对象 - 算法依赖于元素类型的操作

对于第二点,我们以find为例子说明算法如何依赖于元素,只要元素支持判等符号,那么这个算法就能实现。已知支持判等(==)的元素类型有:int double string。如果说,一个元素类型是C风格字符串char *,那就不能使用这个算法了,因为没有定义判等(==)操作。

二、泛型算法的分类

附录A有详细说明,大致内容如下: 这里写图片描述

算法永远不会执行容器操作,它运行在迭代器上。也就是永远不会执行添加和删除元素。这样设计的原因: - 算法的通用性考虑。算法不直接操作容器元素,而是操作迭代器。对于不同数据类型就不需要重写算法了 - 迭代器的属性决定最终这个算法是只读还是可删可写

三、书中详细讲解的算法

一般而言算法都是遍历整个(部分)容器,故前两参数一般都是指操作的对象集的范围。如:算法名称(vec.begin(),vec.end(),para1)

3.1 只读算法 find 查找

范围内查找容器中的某个元素: - 若存在指向该元素的迭代器; - 若不存在范围尾后迭代器vec.end()

例子:在vector ivec{1,2,3,4,5,6}中查找元素74两个元素。

int main()
{
    vector ivec{1,2,3,4,5,6};
    auto result=find(ivec.begin(),ivec.end(),6);
    if(result!=ivec.end())
        cout            
关注
打赏
1658157489
查看更多评论
0.0470s