Essential C++第三章 泛型编程风格

本文深入探讨了C++中的泛型编程,包括指针算术运算、Iterator的使用、各种容器的共通操作,特别是顺序性容器如vector和list的特点。此外,还详述了泛型算法如find()、binary_search()的应用,并介绍了Map和Set的使用,以及Iterator Inserter和iostream Iterator的实践。
摘要由CSDN通过智能技术生成

指针的算术运算

相关概念

vector可以是空的,但是数组array则不行

了解Iterator

相关概念

主要泛型算法:

  • 搜索算法:find()、count()、adjacent_find()、find_if()、count_if()、binay_search()、find_first_of()
  • 排序及次序整理算法:merge()、partial_sort()、pattition()、random_shuffle()、reverse()、rotate()、sort()
  • 复制、删除、替换算法:copy()、remove()、remove_if()、replace()、replace_if()、swap()、unique()
  • 关系算法:equal()、includes()、mismatch()
  • 生成与质变算法:fill()、for_each()、generate()、transform()
  • 数值算法:accumulate()、adjacent_difference()、patial_sum()
  • 集合算法:set_union()、set_difference()

所有容器的共通操作

相关概念

共通操作:

  • ==、!=、=、empty()、size()、clear()
  • begin()和end(),其中end()指向容器的最后一个元素的下一位置
  • insert()和erase()

重点

默认参数值提供的规则

  1. 默认值的解析操作由最右边开始进行。如果我们为某个参数提供了默认值,那么这一参数右侧的所有参数都必须也具有默认参数值才行。
  2. 默认值只能够指定一次。

使用顺序性容器

相关概念

主要顺序性容器:vector 和 list、deque

  • vector以一块连续内存来存放元素
  • list是双向链表结构,其可以执行前进或后退操作
  • deque的行为和vector很相似,其对于最前端元素的插入和删除操作,效率更高,末端元素也是一样

使用泛型算法

重点

  • find()用来搜索无序集合中是否存在某值
  • binary_search()用于有序集合的搜索

如何设计一个泛型算法

相关概念

函数重载机制:参数列表(而非返回类型)不同的两个或多个函数,可以拥有相同的函数名称

使用Map

相关概念

  • key-value 键值对
  • it -> first 对应key it -> second 对应value
  • 如果需要储存多份相同的key值,就必须使用multimap

使用Set

相关概念

  • set由一群key组合而成。如果我们想知道某值是否存在于某个集合内,就可以使用set。
  • 对于任何key值,set只能储存一份,否则要使用multiset。

如何使用Iterator Inserter

使用iostream Iterator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值