首页 > 编程语言 >泛型编程

泛型编程

时间:2023-12-20 19:24:09浏览次数:20  
标签:函数 int double 编程 swap 泛型 stack 模板

泛型编程:使用模板,编写跟类型无关的代码。

一个函数和类的时候,针对不同类型需要写很多重复的代码。

函数:比如我们想实现交换int、double、char等等各种类型对象的函数swap

类:比如想实现一个数据结构栈Stack , Stack的多个对象,st1存int st2存double,等等。

在没有模板之前,我们得针对各个类型写很多个swap函数和Stack类,而这些函数和类,逻辑是一样的,只是处理对象的类型不同

 

1、函数模板
template<class T>

void swap(T &a , T & b){...}

 

 

2、类模板
template<class T>

class Stack

{

private:

T* _a;

size_t _size;

size_t capacity;

}

 

 

3、模板的原理

编译器根据调用函数模板和类模板的类型,实例化出对应的函数类

 

int x1, x2;

swap(x1 , x2);

 

double x3 , x4;

swap(x3 , x4);

 

stack<int> st1;

stack<double> s2;

 

实例化-----根据模板出函数和类

模板不会被编译指令放到代码段

编译器编译是把实例化生成的函数和类放到进程的代码段去执行

 

void swap(int &a , int &b){}

void swap(double &a , double &b){}

 

class stack{int *_a;...};

class stack{double *_a;...}

 

 

标签:函数,int,double,编程,swap,泛型,stack,模板
From: https://www.cnblogs.com/lyp20010104books/p/17917294.html

相关文章

  • 实验7 文件应用编程
    task4源代码1#include<stdio.h>2#include<stdlib.h>34intmain(){5FILE*fp;6charch;7intcnt=0;89fp=fopen("d:\\date\\data4.txt","r");10if(fp==NULL){11printf("......
  • 实验7 文件应用编程
    一,实验目的二,实验准备三,实验内容1,实验任务1task1_1.c1//将图书信息写入文本文件data1.txt23#include<stdio.h>45#defineN8067typedefstruct{8charname[N];//书名9charauthor[N];//作者10}Book;1112intmain(){......
  • 自学精灵--专业的编程学习网站
    ​这是我看过的最靠谱的编程学习网站,名字是:自学精灵,网站是:learn.skyofit.com。(百度搜索"自学精灵"也可找到此站,搜不到可以用必应搜)。自学精灵是全网最强的学习平台,我不喜欢“全网最强”这样的字眼,但此站的内容确实是全网最强!此站内容很丰富,包括:入门:Java学习路线及资料、Java项......
  • java网络编程
    一、网络编程入门1、网络编程概述 2、网络编程的三要素 3、IP地址  InetAddress类示例: 4、端口5、协议  二、UDP通信程序1、UDP通信原理2、UDP发送数据 示例:packagecom.itbianma01;importjava.io.IOException;importjava.net.*;pu......
  • 实验7—文件应用编程
    4、实验任务4源代码1#include<stdio.h>23intmain(){4FILE*fp;5fp=fopen("d:\\data4.txt","r");6if(fp==NULL){7printf("failtoopenfile.\n");8return1;9}1011cha......
  • 第十二单元 `T-SQL` 编程
    createdatabasestep2_unit12;gousestep2_unit12;go--部门表CREATETABLE[dbo].[Department]([Id][int]PRIMARYKEYIDENTITY(1,1)NOTNULL,[Name][varchar](20)NULL);--职位表CREATETABLE[dbo].[Job]([Id][int]PRIMARYKEYIDENTITY(1,1)......
  • (三十五)C#编程基础复习——C#预处理器指令
    预处理指定的作用主要是向编译器发出指令,以便在程序编译开始之前对信息进行一些预处理操作。在C#中,预处理器指令均以#开头,并且预处理器指令之前只能出现空格不能出现任何代码。另外,预处理器指令不是语句,因此它们不需要分好;结尾。在C#中,预处理指令用于帮助条件编译。不同于C和C++......
  • Java-并发编程-03深入理解并发编程概念以及相关关键字
    浅入并发编程三个核心概念在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。我们先看具体看一下这三个概念:1.原子性原子性:即一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。举个最简单的例子,大家想一下假如为一......
  • 游刃有余:玩转Java泛型
    Java中的泛型提供了一种创建可以处理不同类型数据的可重用代码的方法。它允许用户定义可操作各种数据类型的类、接口和方法,而无需牺牲类型安全性。在Java5中引入的泛型已经成为Java编程语言的一个基本特性。在Java引入泛型之前,它使用原始类型来允许将各种类型的对象存储在......
  • 实验7 文件应用编程
    1、实验4源代码1#include<stdio.h>23intmain()4{5FILE*fp;6charch;7inti=0;8fp=fopen("data4.txt","r");9if(fp==NULL){10printf("failtoopenfile\n");11retur......