服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++泛型算法的一些总结

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

2020-12-23 14:50C++教程网 C/C++

以下是对C++中的泛型算法进行了总结介绍。需要的朋友可以过来参考下

泛型算法的一些总结
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对象时,实参对象的元素被移出并删除。

延伸 · 阅读

精彩推荐
  • C/C++C语言实现双人五子棋游戏

    C语言实现双人五子棋游戏

    这篇文章主要为大家详细介绍了C语言实现双人五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    两片空白7312021-11-12
  • C/C++OpenCV实现拼接图像的简单方法

    OpenCV实现拼接图像的简单方法

    这篇文章主要为大家详细介绍了OpenCV实现拼接图像的简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    iteye_183805102021-07-29
  • C/C++c/c++实现获取域名的IP地址

    c/c++实现获取域名的IP地址

    本文给大家汇总介绍了使用c/c++实现获取域名的IP地址的几种方法以及这些方法的核心函数gethostbyname的详细用法,非常的实用,有需要的小伙伴可以参考下...

    C++教程网10262021-03-16
  • C/C++深入C++拷贝构造函数的总结详解

    深入C++拷贝构造函数的总结详解

    本篇文章是对C++中拷贝构造函数进行了总结与介绍。需要的朋友参考下...

    C++教程网5182020-11-30
  • C/C++关于C语言中E-R图的详解

    关于C语言中E-R图的详解

    今天小编就为大家分享一篇关于关于C语言中E-R图的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    Struggler095962021-07-12
  • C/C++使用C++制作简单的web服务器(续)

    使用C++制作简单的web服务器(续)

    本文承接上文《使用C++制作简单的web服务器》,把web服务器做的功能稍微强大些,主要增加的功能是从文件中读取网页并返回给客户端,而不是把网页代码...

    C++教程网5492021-02-22
  • C/C++C语言main函数的三种形式实例详解

    C语言main函数的三种形式实例详解

    这篇文章主要介绍了 C语言main函数的三种形式实例详解的相关资料,需要的朋友可以参考下...

    ieearth6912021-05-16
  • C/C++c/c++内存分配大小实例讲解

    c/c++内存分配大小实例讲解

    在本篇文章里小编给大家整理了一篇关于c/c++内存分配大小实例讲解内容,有需要的朋友们可以跟着学习参考下。...

    jihite5172022-02-22