• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++泛型算法的一些总结

C++泛型算法的一些总结

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++泛型编程,c++泛型,c++泛型编程通过 实现,泛型算法,java泛型总结等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

泛型算法的一些总结
1、每个泛型算法的实现都独立于单独的容器,并且不依赖于容器存储的元素类型。

2、泛型算法从不直接添加或删除元素。

3、与容器的类型无关,只在一点上隐式地依赖元素类型:必须能够对元素做比较运算。

A、需要某种遍历集合的方式:能够从一个元素向前移到下一个元素。

B、必须能够知道是否到达了集合的末尾。

C、必须能够对容器中的每一个元素与被查找的元素进行比较。

D、需要一个类型来指示元素在容器中的位置,或者表示找不到该元素。

4、迭代器将算法和容器绑定起来。算法基于迭代器及其操作实现,而并非基于容器操作。

5、使用泛型算法必须包含algorithm头文件

6、通常泛型算法都是在标记容器(或其他序列)内的元素范围的迭代器上操作的,标记范围的两个实参类型必须精确匹配,而迭代器本身必须标记一个范围,第一个迭代器通过不断地处境,必须可以到到达第二个迭代器。

7、String标准库为string对象与char *对象定义了相等(==)操作符。

8、谓词(函数):是做某些检测的函数,返回用于条件判断的类型,指出条件是否成立。函数名可用于函数形参。

9、unique 的使用:该算法删除相邻的重复元素,然后重新排列输入范围内的元素,并且返回一个迭代器,表示无重复的值范围的结束。unique实际上并没有删除任何元素,而是将无重复的元素复制到序列的前端,返回的迭代器指向超出无重复无素范围末端的下一位置。注:由于该算法删除相邻的重复元素,所以在调用此函数之前,要调用sort函数进行排序。

10、关联容器的键是const对象,因此关联容器的迭代器视为支持自减远处的输入迭代器,而不是完整的双向迭代器。

11、泛型算法的结构:

A、通常有一对迭代器标记输入范围。

B、_if 版本的带有一个谓词函数开参,谓词函数用于表示所提供操作的要求,例如排序的规则。

C、_copy 版本多了一个绑定到容器元素类型相同(或可转换)的另一个容器,把一个容器的元素复制到绑定的容器中,并实现算法的操作,但对输入迭代器所标记的容器没有影响。

12、关于list 容器的特有算法。

list 容器上的迭代器是双向的,而不是随机访问类型。由于list 容器不支持随机访问,因此,在此窗口上不能使用使用需要随机访问迭代器的算法sort , 而merge, remove, reverse, unique 等性能也非常低。对于list 对象,应该优先使用list 容器特有的成员版本,而不是泛型算法。

list 特有的算法与其泛型算法版本之间有两个到头重要的差别,list容器特有的操作能添加和删除元素。

A、remove和 unique 的list版本修改了其关联的基础容器,真正地删除了指定的元素。

B、list容器提供的merge和splice运算会破坏它们的实参。使用merge 的泛型算法版本时,合并的序列将写入目标迭代器指向的对象,而它的两个输入序列保持不变。但是,使用list容器的merge成员函数时,则会破坏它的实参list对象,当实参对象的元素合并到调用merge函数的list对象时,实参对象的元素被移出并删除。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++实现的泛型List类分享
  • C++泛型算法的一些总结

相关文章

  • 2017-05-28Unix下C程序内存泄漏检测工具Valgrind的安装与使用详解
  • 2017-05-28浅谈c++中的stl中的map用法详解
  • 2017-05-28用Visual Studio2017写C++静态库图文详解
  • 2017-05-28C++条件及循环语句的综合运用实例
  • 2017-05-28C++中的类型转换static_cast、dynamic_cast、const_cast和reinterpret_cast总结
  • 2017-05-286个变态的C语言Hello World程序
  • 2017-05-28C++程序的执行顺序结构以及关系和逻辑运算符讲解
  • 2017-05-28实例讲解C++编程中的虚函数与虚基类
  • 2017-05-28深入解析C++编程中范围解析运算符的作用及使用
  • 2017-05-28排序算法模板实现示例分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 解析c++中的默认operator=操作的详解
    • 汇编语言rep movsd 的使用详解
    • C语言二叉树的非递归遍历实例分析
    • c/c++ 奇技淫巧(一些c语言的技巧)
    • 堆排序算法(选择排序改进)
    • 详解C++中二进制求补运算符与下标运算符的用法
    • 什么是工程/项目?
    • 共用体的定义与应用详细解析
    • C/C++ 公有继承、保护继承和私有继承的对比详解
    • C语言简单实现求n阶勒让德多项式的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有