首页 > 编程语言 >c++:模板

c++:模板

时间:2022-11-20 16:56:46浏览次数:42  
标签:arr 函数 int c++ len template 模板

一、模板的基本概念

c++除了面向对象的编程思想之外,还有泛型编程,主要技术是模板。

c++提供两种模板机制:函数模板,类模板。

函数模板:建立一个通用函数,其函数返回值和形参类型可以不具体定制,同一个虚拟的类型来代表。(模板必须声明在函数上方,且一个模板只对应一个函数)

语法:

template <typename T>
//函数声明或定义
//template--声明创建模板
//typename--声明后面的符号是一种数据类型,可以用class代替
//T--通用的数据类型,名称可替换

 

二、模板实例

#include <iostream>
using namespace std;

template <typename T>  //声明一个排序模板 
void mysort(T arr[], int len) {
    int i, j;
    T temp;
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
}

template <typename T>  //声明一个打印模板 
void print(T arr[],int len){
    int i;
    for(i=0;i<len;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
}

void test01(){  //测试int数组 
    int a[5]={2,3,5,1,4};
    print(a,5);
    mysort(a,5);
    print(a,5);
}

void test02(){  //测试char数组 
    char a[]="bbsajasd";
    int len=sizeof(a)/sizeof(char)-1;
    print(a,len);
    mysort(a,len);
    print(a,len);
}

int main() {
    test01();
    test02();
    return 0;
}

【运行结果】

 

 

 

标签:arr,函数,int,c++,len,template,模板
From: https://www.cnblogs.com/yihong-song/p/16908748.html

相关文章

  • C++面向对象程序设计概念梳理
    写在前面:本篇文档是为了《C++面向对象程序设计》课程所写,包含了本课程考试可能会考的所有概念。当然,因为目的只是为了通过考试,所以我将这些概念已经尽量精简。如果你将下......
  • c++:函数的重载
    一、重载的定义对于同一种功能但是参数不一样的函数,使用重载就可以实现功能相同的函数拥有相同的函数名,在调用函数的时候,通过实参的类型,判断调用哪个函数。【不使用重载......
  • c/c++常见的数据类型表示的范围
    首先参考博客 ​​C语言:基本数据类型及表示范围-myrj-这里有个疑问,int和long到底什么区别:看了一些博客:​​在C+中,int和long有什么区别?​​​​C和C++中int和long有什么......
  • Android 编译C++
    Android编译C++项目​​前言​​​​正文​​​​一、基本知识​​​​①要做什么?​​​​②JNI是什么?​​​​③NDK是什么?​​​​二、配置NDK​​​​三、创建新工程......
  • [排序算法] 归并排序 (C++)
    归并排序解释归并排序MergeSort是典型的分治法的应用,其算法步骤完全遵循分治模式。分治法思想分治法思想:将原问题分解为几个规模较小但又保持原问题性质的子问题,......
  • windows--cmake与c++的使用教程(13)
    1概述本文基于前文环境本节目标:为发布项目关闭调试控制台(/SUBSYSTEM:WINDOWS)2CMake脚本设置debug显示控制台还是很有帮助的,可输出调试信息到控制台,观察成勋运......
  • windows--cmake与c++的使用教程(12)
    1概述本文基于前文环境本节目标:为项目增加链接选项:requireAdministrator(/level='requireAdministrator'),用于增加管理员权限2目标程序安装C盘(windows默认系......
  • windows--cmake与c++的使用教程(11)
    1概述本文基于前文环境本节目标:设置项目包含头文件路径,关键语法target_include_directories。2目标main.cc与Typedef.h不在同一个目录下,Typedef.h位于incl......
  • c++中参数传递的三种方式
    一、值传递通过值传递传递的形参实际上是对实参的一个拷贝,对形参进行修改操作,不会影响到实参的值。【实例】#include<iostream>usingnamespacestd;voidchange(i......
  • 遗传算法 模板
    利用python中的geatpy库实现单目标和多目标优化importnumpyasnpimportgeatpyaseaclassMyProblem(ea.Problem):#继承Problem父类def__init__(self):......