c++ 基础知识-模板1

C++基础——模板 模板是一种较为通用的模具,不能单独使用C++除了面向对象编程之外,还有一种是泛型编程,使用的就是模板C++中提供了两种模板:函数模板,类模板。 阅读详情

c++ 基础知识-模板1

1.c++ 基础知识-模板-函数模板

总结
函数模板利用关键字template
使用函数模板有两种方式;自动类型推导,显示指定类型
模板的目的是为了提高复用性,将类型参数化

#include <iostream>
using namespace std;

//利用模板提供通用的交换函数
template <typename T>//typname可以用class替换
void mySwap(T& a,T& b)
{
	T temp = a;
	a = b;
	b = temp;
}
void test_fun()
{
	int a = 22;
	int b = 33;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	//1.自动类型转换
	mySwap(a,b);
	cout<<"mySwap(a,b)"<<endl;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	//2.显示指定类型
	mySwap<int>(a,b);
	cout<<"mySwap<int>(a,b)"<<endl;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	//输出
	//a = 22
	//b = 33
	//mySwap(a,b)
	//a = 33
	//b = 22
	//mySwap<int>(a,b)
	//a = 22
	//b = 33
}
int main()
{
	test_fun();
	return 0;
}  

2.c++ 基础知识-模板-函数模板实例

#include <iostream>
using namespace std;

//利用模板提供通用的交换函数
template <typename T>//typname可以用class替换
void mySwap(T& a,T& b)
{
	T temp = a;
	a = b;
	b = temp;
}

template <typename T>//typname可以用class替换
void swapSort(T *arr,int length)
{
	//int length = sizeof(arr)/sizeof(arr[0]);
	for (int i = 0; i < length; i++)
	{
		T max = i;
		for (int j = i+1;j<length;j++)
		{
			if (arr[max] < arr[j])
			{
				max =j;
			} 
		}
		if (max != i)
		{
			//交换max和i
			mySwap(arr[max],arr[i]);
		}
	}
}

template <typename T>//typname可以用class替换
void outPut(T *arr,int length)
{
	//int length = sizeof(arr)/sizeof(arr[0]);
	for (int i = 0; i < length; i++)
	{
		cout<<arr[i]<<endl;
	}
}

void test_fun()
{
	//int a = 1;
	//string b = "jkjkjk";
	//mySwap(a,b);//error C2782: “void mySwap(T &,T &)”: 模板 参数“T”不明确
	int int_arr[] = {1,3,2,4,7,6,9,5,8,0};
	int length = sizeof(int_arr)/sizeof(int_arr[0]);
	swapSort(int_arr,length);
	outPut(int_arr,length);

	//char char_arr[] = {'s','a','e',};
	//int length = sizeof(char_arr)/sizeof(char_arr[0]);
	//swapSort(char_arr,length);
	//outPut(char_arr,length);
}

int main()
{
	test_fun();
	return 0;
}  

3.c++ 基础知识-模板-普通函数与模板函数异同

普通函数与模板函数区别
普通函数可以自动类型转换(隐式类型转换)
函数模板调用时,利用自动类型推导,不会发生隐式类型转换
利用显示指定类型,可以发生隐式类型转换

#include <iostream>
using namespace std;

//普通函数
int add_1(int a,int b)
{
	return a + b;
}

//模板函数
template<class T>
T add_2(T a,T b)
{
	return a + b;
}

void test_fun()
{
	int a = 9;
	//int b = 10;
	char c = 'd';

	//普通函数
	cout<< add_1(a,c)<<endl;

	//隐式调用转换
	//cout<< add_2(a,c)<<endl;//error C2782: “T add_2(T &,T &)”: 模板 参数“T”不明确

	//显式调用
	cout<< add_2<int>(a,c)<<endl;
}

int main()
{
	test_fun();
	return 0;
}  


在VisualStudio添加CPP模板 创建一个模板项目:导出模板:自定义模板内容:重新导入模板: 重启 Visual Studio,您的模板将出现在新建项目的模板列表中。 方法 2:使用代码片段(Code Snippets) 打开代码片段管理器:添加自定义代码片段: 使用代码片段: 在 文件中,输入快捷键 ,然后按 键,注释模板将自动插入。 方法 3:直接修改默认模板 找到默认模板文件: 修改模板:保存并重启 Visual Studio: 阅读详情

相关推荐

研究:同样的C++模板在多个cpp里出现,编译器是否要重复生成?

2023年就要过去,马上要跨如2024年。祝大家在新的一年,有个好收成。一直以来不是很确定:同样的的模板,在各个cpp分别出现,编译器要实现几份?研究一下。

tumu_C的博客 979

【C++基础】模板

模板就是建立,大大。

qq_43192337的博客 318

【校招】SHL 的 General Ability (GA, 通用能力测试)

SHL 的 General Ability (GA, 通用能力测试) 文章目录SHL 的 General Ability (GA, 通用能力测试)1、归纳推理题1.1 圈圈线条推理1.2 图形颜色位置推理1.3 箭头指向推理2. 数字推理题攻略3. 语言推理题 1、归纳推理题   归纳推理题我把它总结为三种类型:圈圈线条推理;图形颜色位置推理;箭头指向推理。 1.1 圈圈线条推理   你别看这个题目看起来很复杂,其实很简单,而且这个题型的题目背后原理都一样!我把我的 tips 偷偷分享给你们嘿嘿~先从 A

Sunnyside_ 2万+

C++入门教程:第九篇 - 模板基础

本文介绍了C++中的模板基础,包括函数模板、类模板、模板的特化以及类型特征。模板是C++中实现泛型编程的强大工具,可以提高代码的重用性和灵活性。了解模板的基本概念和使用方法可以帮助你编写更加通用和高效的代码。在下一篇教程中,我们将探讨C++中的智能指针,学习如何管理动态内存并提高代码的安全性。希望这篇文章对你有所帮助。如果你有任何问题或建议,欢迎在评论区留言。我们下篇文章见!

HYP_Coder的博客 477

RK3568 开发实战:手动构建 Linux 4.19 内核镜像与设备树优化

本文详细介绍了为RK3568开发板手动编译Linux 4.19内核的完整实战流程。从环境搭建、源码获取、内核配置,到设备树深度定制与优化,再到镜像打包与烧写,旨在帮助开发者脱离官方SDK依赖,实现对嵌入式Linux系统的完全掌控,提升硬件适配与性能优化能力。

weixin_29175469的博客 269

Altium Designer操作技巧(4)——如何利用嘉立创EDA来输出3D封装到AD封装库?

本文介绍了利用嘉立创EDA和FreeCAD软件为PCB元件添加3D模型的方法。首先在嘉立创EDA中搜索元件编号并导出3D模型,然后使用FreeCAD删除3D模型中的PCB基板部分,最后将处理后的3D模型导入PCB封装库并更新到PCB设计中。文章详细讲解了每个步骤的操作流程,包括模型导出、基板删除、位置调整等关键环节,并提供了解决常见问题的方法。通过这种方法,电子工程师可以快速获得元器件的3D模型,提高PCB设计的准确性。

u012526819的博客 2580

【C++】模板(初级)

关于C++中泛型编程——模板的介绍

Brant_zero的博客 750

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3118

C++模板(入门)

class 类模板名// 类内成员定义以Stack为例,下面就是一个Stack类的模板,模板参数为Tpublic:, _top(0)private:T* _a;

iiiiiankor的博客 1918

使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容

维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。

2201_76125261的博客 475

从模糊到清晰:让AI教相机自动对焦的实战指南

AI自动对焦技术:让模糊照片成为过去式 深度学习驱动的自动对焦技术正颠覆传统摄影,使相机能在复杂场景下智能锁定焦点。相比传统对焦方法在弱光、低对比度环境下的失效,AI通过学习"清晰-模糊"规律,实现全场景精准对焦。本文详细解析了该技术的三大优势: 自适应各种光线条件; 毫秒级对焦速度; 突破物理限制的精度。 通过PyTorch搭建的CNN模型,展示了从数据采集到模型训练的全流程实战方案,包括使用拉普拉斯算子评估图像清晰度等关键技术。该技术已成功应用于手机摄影、工业检测、无人机航拍和安防监

LXY_LOVE36的博客 346

C++模板基础知识

为了生成一个实例化版本,编译器需要掌握函数模板或类模板成员函数的定义。因此,与非模板代码不同,模板的头文件通常即包括声明也包括定义。函数模板和类模板成员函数的定义通常放在头文件中。像常规的头文件和源文件分离编译的情况,在模板情况下行不通。如下模板类Blob,在文件中public:public:T getA();U getB();U _b;如果将Blob类中的构造函数及getA()和getB()函数,定义在文件return _a;return _b;那么在。

mo4776的博客 1101

高频注入是否需要对齐和强拖操作?

高频注入技术显著优化了传统FOC启动流程,但仍需部分对齐操作。传统启动必须包含位置检测、对齐和强拖等步骤,而高频注入可实现零速闭环,简化或跳过部分环节。高频注入下的对齐主要用于验证有效性、初始化观测器和建立初始磁链,形式可大幅简化。虽然高频注入基本消除了传统强拖需求,但在重载、弱凸极等特殊情况下仍需辅助。实际应用中可采用自适应混合策略,根据负载和电机类型选择最优启动方案。高频注入使对齐和强拖从"必须"变为"可选优化项",是无传感器控制的重要进步。

汽车软件开发 204

全面总结C++类模板使用的基础知识

✨引言 建立一个通用类,类中的成员数据类型可以不具体确定,先用一个虚拟的类型来代表示例: 先使用template关键字声明类模板,接着创建Person类,属性name和age用虚拟类型T1和T2声明,这就是最简单的类模板定义。示例: 可以看到第一行代码T2的后面指定了类型为整型,所以创建类模板对象的时候可以省略T2数据类型的指定,但是切记 :在不给参数列表最后一个虚拟类型指定数据类型的情况下是无法做到参数列表含有默认参数的。 类模板中的成员

叶落秋白的博客 3288

计算数列位置N的值

本文介绍了一个数列生成问题,要求根据输入的两个整数M和N生成特定规则的数列,并输出第N个位置上的数值。数列生成规则为:前M个元素为1到M;后续元素根据前M个元素是否重复来决定计算方式(求和或求差)。文章提供了C++、Java和Python三种语言的实现方案,均包含输入处理、数列初始化、循环计算和结果输出等步骤。各语言实现中均使用集合去重特性判断重复元素,并通过内置函数或自定义方法求取最大值和最小值。该问题主要考察基础编程能力,包括数组/列表操作、最值计算和重复元素判断等基本编程技巧。

面试高手的博客 649

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【C++】模板进阶---cpp模板的深入探索

模板参数分类类型形参与非类型形参。 类型形参,即出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。

专注于前后端学习 1234

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++ 模板基础知识——类模板中的友元

在C++中,类模板中的友元关系可以是相当复杂的主题,因为它涉及到模板参数化和类型依赖的处理。友元在类模板中的使用可以帮助你在保持类封装的同时,允许特定的其他类或函数访问其私有或保护成员。

慢慢记录,慢慢更新。 2760

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C++ 模版基础知识——函数模板

C++ 函数模板是实现代码重用和类型安全的重要工具。通过使用模板,开发者能够编写通用的函数,这些函数可以处理多种数据类型,而无需为每种类型编写重复的代码。这种灵活性使得 C++ 在泛型编程方面具有显著优势。

慢慢记录,慢慢更新。 2050

【CPP】CPP的模板(前篇)

模板是分割C和C++的重要的分水线,决定了C语言注定不能取代C++设计模板一般咱称作为泛型编程,泛型编程即通过数据类型编写代码,使得同一段代码能够不断复用,提高了代码的复用性模板一般分为函数模板类模板public:,_size(0),_capa(n){}~Stack()_size = 0;_capa = 0;"

2302_79981653的博客 1598

【C++】C++模板基础知识篇

模板有多个参数时,用“,”分隔。class 类模板名// 类内成员定义public://...private:T* _a;int _top;模板和typedef有什么区别?如果typedef能够解决像栈队列这些数据结构的问题,C语言为什么不供,就是语法不好用。真正解决不了的是给栈里面数据类型不同的时候该怎么做?

zxctsclrjjjcph的博客 1691

C++ 模板基础知识——类模板、变量模板与别名模板(超长纯享版)

类模板是用于生成类的模具。通过提供特定的模板参数,可以实例化出具体的类。这个概念与函数模板类似。

慢慢记录,慢慢更新。 2599

CPP中模板的使用1

本文介绍了C++中的函数模板概念和使用方法。函数模板通过将类型参数化,提高了代码复用性,可用于生成处理不同数据类型的函数。主要内容包括:1) 函数模板定义语法和交换函数示例;2) 两种调用方式(自动类型推导和显式指定类型);3) 普通函数与模板函数的区别及调用规则;4) 模板的局限性及解决方法(如运算符重载和具体化模板)。文章还提供了排序函数模板案例和自定义类型处理示例,展示了模板在实际编程中的应用。

2401_84857113的博客 496

CPP编程语言-模板

函数模板是指:可以用多种不同数据类型的参数进行调用,代表了一个函数家族。模板分为两大类:函数模板和类模板。

qq_45595546的博客 1642

初识Cpp之 一、基础知识

​ C++融合了三种不同的编程方式:1、C语言代表的过程性语言,2、C++在C语言的基础上添加的类代表的面向对象语言,3、C++模板支持的泛型编程。使用C++的原因之一是为了利用其面向对象的特性。要利用这种特性,必须对标准C语言知识有较为深入的了解,因为它提供了基本类型、运算符、控制结构和语法规则。​ 面向对象编程(Object Oriented Programming, OOP)的诞生,试图让语言来满足问题的要求,其理念是设计与问题本质特性相对应的数据格式。

Shen Mu Xin's Blog 2987

C++ 模板基础知识——可变参数模板

可变参数模板(Variadic Templates)是C++11引入的新特性,允许模板定义中包含任意数量的模板参数。这大大简化了以往实现类似功能所需的复杂代码。

慢慢记录,慢慢更新。 2329

C++ 模板基础知识——多态在模板中的应用

在C++中,模板和多态是两种强大的编程技术,它们可以用来创建灵活和可重用的代码。虽然多态通常与继承和虚函数(动态多态)关联,但在模板中使用时,主要涉及到编译时多态(静态多态)。

慢慢记录,慢慢更新。 1681
上一篇: c++ 基础知识-类与对象-实践-员工管理系统(记录)2
下一篇: ORB-SLAM2-学习记录1-ORB特征提取
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值