第10章 泛型程序设计与C++标准模板库

本文介绍了泛型编程的基本概念,强调了其编写不依赖具体数据类型的特性,以及如何通过模板实现。文中提到,C++的模板是泛型编程的关键,同时讨论了概念和模型的概念,如Comparable和Assignable。作者还解释了如何用概念作为模板参数名,并给出了insertionSort函数模板的示例。此外,文章与标准模板库(STL)的实现相关联,说明了STL如何利用这些概念。
摘要由CSDN通过智能技术生成

10.1 泛型程序设计及STL的结构

10.1.1 泛型程序设计的基本概念

  • 编写不依赖于具体数据类型的程序
  • 将算法从特定的数据结构中抽象出来,成为通用的
  • C++的模板为泛型程序设计奠定了关键的基础

术语:概念

  • 用来界定具备一定功能的数据类型。例如:
    • 将“可以比大小的所有数据类型(有比较运算符)”这一概念记为Comparable
    • 将“具有公有的复制构造函数并可以用‘=’赋值的数据类型”这一概念记为Assignable
    • 将“可以比大小、具有公有的复制构造函数并可以用‘=’赋值的所有数据类型”这个概念记作Sortable
  • 对于两个不同的概念A和B,如果概念A所需求的所有功能也是概念B所需求的功能,那么就说概念B是概念A的子概念。例如:
    • Sortable既是Comparable的子概念,也是Assignable的子概念

术语:模型

  • 模型(model):符合一个概念的数据类型称为该概念的模型,例如:
    • int型是Comparable概念的模型。
    • 静态数组类型不是Assignable概念的模型(无法用“=”给整个静态数组赋值)

用概念做模板参数名

  • 很多STL的实现代码就是使用概念来命名模板参数的。
  • 为概念赋予一个名称,并使用该名称作为模板参数名。
  • 例如

    • 表示insertionSort这样一个函数模板的原型:

template <class Sortable>
void insertionSort(Sortable a[], int n);

原文链接:侵删

https://www.cnblogs.com/alec7015/p/12465052.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值