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

网页制作与网站建设实战大全 豆瓣网站推广优化平台

网页制作与网站建设实战大全 豆瓣,网站推广优化平台,网站如何做交互,营销型网站推广服务目录C里面template怎么用inline函数模板类模板函数模板特化C里面template怎么用 template是什么? template其实是C的一种语法糖,本意是去简化程序员的工作. void swap(int *a,int *b){int temp *a;*a *b;*b temp; }比如在写一个交换函数的的时候,参数为两个in…

目录

  • C++里面template怎么用
  • inline函数模板
  • 类模板
  • 函数模板特化



C++里面template怎么用

template是什么?
template其实是C++的一种语法糖,本意是去简化程序员的工作.

void swap(int *a,int *b){int temp = *a;*a = *b;*b = temp;
}

比如在写一个交换函数的的时候,参数为两个int类型数据,那这个交换函数只能局限在int的数据类型吧,float呢?double呢?这时候就需要写很多相同的代码,很无聊并且多余,这个时候我们就能使用我们今天的主角template来简化我们的写法了,改进之后


//声明时这样
template<typename T> void Swap(T *a, T *b){T temp = *a;*a = *b;*b = temp;
}//调用时这样
int a=10,b=20;
swap(&a,&b);

在这里的声明是隐式声明,后面会有讲到显式声明


inline函数模板

如果你想把你的函数声明为inline提高效率,那么参考下面

inline关键字放在template之后,函数类型之前

//正确写法
template<typename T>inline T swap(const T*a,const T*b)//错误写法
inline template<typename T>T swap(const T*a,const T*b)

类模板

//类模板声明
template<class Type>class Queue{
public:Queue();Type &front();const Type &front()const;void push(const Type &);void pop();bool empty()const
private:...
};

和咱的函数模板不同啊,我们的类模板需要加个括号(显式)告诉编译器老子是啥类型。

//类模板定义
queue<int>qi;//什么是显式,在定义时加个括号告诉他老子是int就是显式
Queue<vector<double>>qc;
Queue<sting>qs;

函数模板特化

有些时候,我们编写的模板定义并不总是适用于所有类型

template<typename T>
int compare(const T&v1,const T&v2)
{if(v1<v2)return -1;if(v1>v2)return 1;return 0;
}

当这个函数的参数类型是C风格字符串时,这个函数不能正常工作(这个函数将比较两个指针在内存中的相对位置,但没有比较指针指向对象的大小),这时候我们必须提供一个针对C风格字符串的特殊定义,这就是模板特化

函数模板的特化
特化的形式如下:

  • 关键字tempalte后面接一对空的尖括号(< >)
  • 函数名后接模板名和一对尖括号,尖括号中指定这个特化定义的模板形参
  • 函数形参表
  • 函数体
template<>
int compare<const char *>(const char *const &v1,const char *const &v2)
{return strcmp(v1,v2);
}

与任意函数一样,函数模板特化可以声明而无须定义。

template<>
int compare<const char *>(const char *const &,const char *const &);

一定要区分函数重载和模板特化,如果在特化中省略空的模板形参表template<>,那么结果是函数的重载而不是模板特化

int compare(const char *const&,const char *const&);
//声明了该函数的重载版本而不是模板版本

在调用模板的这个特化版本之前,特化的声明必须在作用域中

template<class T>
int compare(const T&t1,const T& t2)
{...
}int main()
{int i=compare("hello","world");...
}template<>
int compare<const char *>(const char *const &s1,const char *const &s2)
{...
}

这个程序有错误,这个函数将会调用未特化的原模板函数

特化出现在对该模板实例的调用之后是错误的

简单的总结:函数模板就是一个通用的函数入口,处理大部分类型的数据,模板特化就是为了处理少数的函数模板里的规则不能处理的数据类型.

http://www.tj-hxxt.cn/news/4718.html

相关文章:

  • 做调查网站赚钱东莞今日头条新闻
  • 阿图什网站网络市场调研
  • 网站修改需要什么产品推广软文范文
  • 自适应网站做百度推广哈尔滨seo整站优化
  • 提供网站技术最全的百度网盘搜索引擎
  • 备案 填写网站信息推广普通话宣传语100字
  • 网站管理cms烟台seo关键词排名
  • 青岛联通网站备案保定seo推广外包
  • 织梦html5手机网站模板学管理培训班去哪里学
  • 建设文明网站平台的意义与概述网络营销的作用
  • 网站建设的法律依据资源搜索
  • 做网站微信朋友圈应该怎么发最佳磁力引擎吧
  • js做网站好吗百度关键词指数排行
  • 网站建设nayuwangwindows优化大师手机版
  • 医院做网站开发上海城市分站seo
  • 网站加ico短视频营销案例
  • 校园图书馆网站建设网站关键词推广价格
  • 免费招聘模板下载云seo关键词排名优化软件
  • 湖南公示新任省管干部口碑seo推广公司
  • 重庆建设部网站2022年关键词排名
  • wordpress仿模板郑州网站seo优化
  • 有限责任公司破产债务怎么处理新手学seo
  • 微信网站建设合同上海网络推广服务
  • 无锡哪里做网站好网站关键词优化办法
  • 建设网络平台成都网络优化托管公司
  • 做智能家居网站需要的参考文献百度网站推广价格查询
  • 服务器搭建网站方案500字seo网络贸易网站推广
  • 深圳网站优化成品视频直播软件推荐哪个好用
  • 四川省建设厅职称查询网站网络营销的特点主要包括什么
  • 凡科可以做游戏网站吗谷歌优化的最佳方案