C++ 函数模板&类模板
函数模板
- #include <iostream>
- #include <string>
- using namespace std;
- template <typename T>
- inline T const& Max (T const& a, T const& b)
- {
- return a < b ? b:a;
- }
- int main ()
- {
- int i = 39;
- int j = 20;
- cout << "Max(i, j): " << Max(i, j) << endl;
- double f1 = 13.5;
- double f2 = 20.7;
- cout << "Max(f1, f2): " << Max(f1, f2) << endl;
- string s1 = "Hello";
- string s2 = "World";
- cout << "Max(s1, s2): " << Max(s1, s2) << endl;
- return 0;
- }
类模板
- #include <iostream>
- #include <vector>
- #include <cstdlib>
- #include <string>
- #include <stdexcept>
- using namespace std;
- template <class T>
- class Stack {
- private:
- vector<T> elems; // 元素
- public:
- void push(T const&); // 入栈
- void pop(); // 出栈
- T top() const; // 返回栈顶元素
- bool empty() const{ // 如果为空则返回真。
- return elems.empty();
- }
- };
- template <class T>
- void Stack<T>::push (T const& elem)
- {
- // 追加传入元素的副本
- elems.push_back(elem);
- }
- template <class T>
- void Stack<T>::pop ()
- {
- if (elems.empty()) {
- throw out_of_range("Stack<>::pop(): empty stack");
- }
- // 删除最后一个元素
- elems.pop_back();
- }
- template <class T>
- T Stack<T>::top () const
- {
- if (elems.empty()) {
- throw out_of_range("Stack<>::top(): empty stack");
- }
- // 返回最后一个元素的副本
- return elems.back();
- }
- int main()
- {
- try {
- Stack<int> intStack; // int 类型的栈
- Stack<string> stringStack; // string 类型的栈
- // 操作 int 类型的栈
- intStack.push(7);
- cout << intStack.top() <<endl;
- // 操作 string 类型的栈
- stringStack.push("hello");
- cout << stringStack.top() << std::endl;
- stringStack.pop();
- stringStack.pop();
- }
- catch (exception const& ex) {
- cerr << "Exception: " << ex.what() <<endl;
- return -1;
- }
- }
C++ 函数模板&类模板的更多相关文章
- 3.2 STL中的函数对象类模板
*: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. ...
- C++ - 模板类模板成员函数(member function template)隐式处理(implicit)变化
模板类模板成员函数(member function template)隐式处理(implicit)变化 本文地址: http://blog.csdn.net/caroline_wendy/articl ...
- C++函数模板&类模板
函数模板 模板概念及语法 主要目的,简化代码,减少重复代码.基本语法格式: template<class T> 或者 template<typename T> //末尾不加分 ...
- C++ 函数模板&类模板详解
在 C++ 中,模板分为函数模板和类模板两种.函数模板是用于生成函数的,类模板则是用于生成类的. 函数模板&模板函数 类模板&模板类 必须区分概念 函数模板是模板,模板函数时 ...
- C++ 函数模板/类模板
#include <iostream> #include <vector> using namespace std; template < class T > // ...
- 函数模板&类模板
#include <iostream> #if 0//函数模板 template<typename T> T max(T a, T b, T c)//函数模板 { if (a ...
- C++_进阶之函数模板_类模板
C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...
- 类模板语法知识体系梳理(包含大量常犯错误demo,尤其滥用友元函数的错误)
demo 1 #include <iostream> #include <cstdio> using namespace std; //template <typenam ...
- C++复习:函数模板和类模板
前言 C++提供了函数模板(function template).所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表.这个通用函数就称为函数模板.凡是函数体 ...
- C++模板编程中只特化模板类的一个成员函数
模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多数成员函数的功能可能是一模一样的,特化时我们可能只需要重新实现1.2个成员函数即可.在这种情况下,如果全 ...
随机推荐
- ajax请求完之前的loading加载
很多时候我们需要引入框架来开发项目,这时我们可能会遇到页面还没加载完源码出来了的问题,给用户一种不好的视觉体验,这是便需要loading加载了,来完善用户体验! /*loading.js*/ // 加 ...
- python之递归与二分法
1. 递归 自己调用自己 递归的入口(参数) 和 出口(return) 树形结构的遍历 import os def func(lujing, n): lst = os.listdir(lujing) ...
- AWT初步—Frame和 Panel
初识 AWT GUI 和 AWT GUI:Graphics User Interface 图形用户界面 AWT:Abstract Window Toolkit 抽象窗口工具集 之前的程 ...
- ArcGIS Arcade
ArcGIS Arcade http://127.0.0.1/Resource/JavaScript/arcgis_js_api/sdk/4.10/latest/guide/arcade/index. ...
- 测试思想-流程规范 SVN代码管理与版本控制
SVN代码管理与版本控制 by:授客 QQ:1033553122 欢迎加入软件性能测试交流群(QQ群):7156436 目录 一. 二. 三. 四. 五. 六. 七. 一. 创建根目录 创建一 ...
- 将 Azure VM 迁移到 Azure 中的托管磁盘
Azure 托管磁盘无需单独管理存储帐户,从而简化了存储管理. 还可以将现有的 Azure VM 迁移到托管磁盘,以便受益于可用性集中 VM 的更佳可靠性. 它可确保可用性集中不同 VM 的磁盘完全相 ...
- Sql_server基本操作
使用Sql_server创建表,视图,触发器,存储过程,函数等基本操作. create table test1( /* 创建一个表 */ num int ) alter table test1 /* ...
- Asp.net Mvc身份验证
1.安装组件 Microsoft.AspNet.Identity.Core,身份认证核心组件 安装Microsoft.AspNet.Identity.EntityFramework,EF实现身份认证 ...
- windows 实用技巧
以下内容版权归原作者所有!!!如果侵权,立即删除. 1.系统激活:https://mp.weixin.qq.com/s/Kl_iEeSSxSprblfSRZ6yEQ 2.百度云下载:https://w ...
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道.如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法. ...