• c++泛型编程


    c++泛型编程

    一、简介

    1.概念:编写不依赖具体数据类型的程序;

    2.目的:将程序尽可能通用,将算法从数据中抽象出来,成为通用算法;

    3.应用:①c++ 中模板为泛型程序设计提供了基础;②STL(标准模板库)是泛型程序设计的例子;

    二、模板

    1.概念:模板是一种用不确定类型参数来产生一系列函数和类的机制。通过模板我们可以产生类和函数的集合,使他们操作不同的数据类型,从而避免为每一种数据类型单独产生一个函数和类。

    2.分类:函数模板、类模板

    3.函数模板、类模板

    4.工作方式:

    ①函数模板实例化->模板函数;
    ②类模板->实例化->模板类->对象;

    三、函数模板

    1.定义:函数模板使用和普通函数一样,但它的类型可以通过参数来传递,在函数定义时可以不指明具体的数据类型;当发送函数调用时,编译器可根据传入的实参自动推断数据类型。

    2.语法

    template 函数模板定义关键字
    <模板参数表> 用来定义函数参数的类型,参数类型有一个或多个,用逗号隔开,不能为空;
    模板参数表中,class\typename 没有任何区别,都是类型表示符号,可以随意替换。

    template <<模板参数表>>
    <返回值类型> < 函数名>(<参数表>)
    {
    	<函数表>
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    template <typename T>
    void Swap(T& a,T& b)
    {
    	T tmp=a;
    	a=b;
    	b=tmp;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.优点

    (1)代码复用,适合所有类型。克服普通函数弊端;
    (2)编译器会进行类型检查。克服宏定义弊端.

    4.缺点

    (1)调试比较难,对程序员要求高;
    (2)一般编写一个类型确定的函数,运行通过后,再修改成函数模板。

    5.调用方式

    (1)自动类型推导调用 Swap(a,b);
    (2)具体类型显示调用 :Swap(a,b);
    注意:函数模板不允许隐式类型转换,调用时类型必须严格匹配。

    6.原理分析

    (1)函数模板中声明了参数类型T,表示了一种抽象类型
    (2)编译器检查到程序调用函数的时候,根据传递参数的实际类型生成模板函数;

    下一篇【C++泛型编程之类模板】

  • 相关阅读:
    力扣刷题 day51:10-21
    C++模板编程(10)---更深入的基础技术:模板参数(Template Parameter)
    leetcode做题笔记135. 分发糖果
    PdfSharp 对中文字体显示乱码的问题
    MySQL临时表创建出错(OS errno 13 - Permission denied)
    【华为OD机试真题 python】最长子字符串的长度 【2022 Q4 | 100分】
    Python(2):字符串
    Java中的集合框架
    Java学习----前端5
    兼顾省钱与性能的存储资源盘活系统
  • 原文地址:https://blog.csdn.net/jun8086/article/details/127631326