当前位置: 首页 > article >正文

C++模版初阶

目录

1.函数模版

1.写法与作用

2.推导实例化

3.显式实例化

2.类模版

3.typename


1.函数模版

1.写法与作用

template<class T>
T add(T a, T b)
{
	return a + b;
}

模版本质是为了适应指定类型,而不用写多个函数重载完成同一功能。

这个加法函数就可以适应int、double等类型的加法。

2.推导实例化

//推导实例化
int a = 0, b = 0;
double c = 3.0, d = 4.0;
int e = add(a, b);
double f = add(c, d);

在这里模版函数会识别实参的类型来推导那个T类型是什么类型。

3.显式实例化

//显式实例化
int a = 0, b = 0;
double c = 3.0, d = 4.0;

//指定T类型为int类型
int e = add<int>(a, b);
//指定T类型为double类型
double f = add<double>(c, d);

2.类模版

template<class T>
class Stack
{
public:
	//实现了可以用栈存储不同类型的数据的功能
	Stack(int n = 4)
		:_array(new T[n])
		,_size(0)
		,_capacity(n)
	{}

	~Stack()
	{
		delete[] _array;
		_array = nullptr;
		_size = _capacity = 0;
	}

	void Push(const T& x);

private:
	T* _array;
	size_t _capacity;
	size_t _size;
};


//声明与定义分离,需要指定类域与类模版
 template<class T>
void Stack<T>::Push(const T& x)//用引用减少拷贝构造,提高效率
{
	if (_size == _capacity)
	{
		T* tmp = new T[_capacity * 2];
		memcpy(tmp, _array, sizeof(T) * _size);
		delete[] _array;

		_array = tmp;
		_capacity *= 2;
	}

	_array[_size++] = x;
}


int main()
{
	// 类模板都是显示实例化
	Stack<int> st1; // int
	st1.Push(1);
	st1.Push(2);
	st1.Push(3);

	Stack<double> st2; // double
	st2.Push(1.1);
	st2.Push(1.1);
	st2.Push(1.1);

	Stack<double>* pst = new Stack<double>;
	//...
	delete pst;

	return 0;
}

3.typename


http://www.kler.cn/a/314916.html

相关文章:

  • INQUIRE:一个包含五百万张自然世界图像,涵盖10,000个不同物种的专为专家级文本到图像检索任务设计的新型基准数据集。
  • 【图像压缩感知】论文阅读:Self-supervised Scalable Deep Compressed Sensing
  • stringUtils详细解释
  • 记录学习react的一些内容
  • AI 扩展开发者思维方式:以 SQL 查询优化为例
  • 华为数通HCIA系列第5次考试-【2024-46周-周一】
  • claude,gpt,通义千问
  • Java面试篇基础部分-ReentrantLock详解(二)
  • 2024最新!!!iOS高级面试题,全!(二)
  • 深度学习对抗海洋赤潮危机!浙大GIS实验室提出ChloroFormer模型,可提前预警海洋藻类爆发
  • Vue3 中组件传递 + css 变量的组合
  • 深度学习03-神经网络01-什么是神经网络?
  • QT快速安装使用指南
  • OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(二)
  • 安全热点问题
  • NCNN 源码(1)-模型加载-数据预处理-模型推理
  • MySQL深入原理
  • 【数学分析笔记】第3章第3节无穷小量与无穷大量的阶(2)
  • 国标GB28181视频融合监控汇聚平台的方案实现及场景应用
  • 机器学习和深度学习的区别:从基础到前沿
  • 35. 模型材质和几何体属性
  • Mapper核心配置文件
  • uniapp 整合 OpenLayer3
  • C++速通LeetCode中等第4题-三数之和
  • 本地快速部署一个简洁美观的个人Halo博客网站并发布公网远程访问
  • 20240918软考架构-------软考171-175答案解析