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

广东建设执业资格中心网站短视频推广引流方案

广东建设执业资格中心网站,短视频推广引流方案,wordpress页脚二维码,有哪些做相册视频剪辑的网站本文主要介绍类模板的特化、局部特化和缺省模板实参; 1.类模板的特化 类模板的特化(Class Template Specialization)是指为特定的模板参数提供自定义实现的过程。通过特化,我们可以针对某些特定的类型或条件提供不同的行为或实现…

本文主要介绍类模板的特化、局部特化和缺省模板实参;

1.类模板的特化

类模板的特化(Class Template Specialization)是指为特定的模板参数提供自定义实现的过程。通过特化,我们可以针对某些特定的类型或条件提供不同的行为或实现;

如果需要特化一个类模板,需要特化该模板中的所有成员函数;

模板的特化注意事项:
需要将模板写成template <>,并且需要指明特定的类型,下面示例需要特化std::string的类型,成员函数按照正常的函数实现即可

template <>
class Stack <std::string>
{}

示例

/** @brief: class complates* @complie: g++ -g *.cc -o d -std=c++11* @autor: your name* @date: 2023/08/22*/#include <iostream>
#include <vector>
#include <stdexcept>template <class T>
class Stack 
{
private:std::vector<T> elems;public:void push(T const&);void pop();T top() const;bool empty() const{return elems.empty();}    int32_t getElemsSize() const{std::cout<<"not string size"<<std::endl;return elems.size();}
};template <typename T>
void Stack<T>::push(T const& elem)
{elems.push_back(elem);
}template <typename T>
void Stack<T>::pop()
{if(elems.empty()) {throw std::out_of_range("empty stack");}elems.pop_back();
}template <typename T>
T Stack<T>::top() const
{if(elems.empty()) {throw std::out_of_range("empty stack");}return elems.back();
}//std::string
template <>
class Stack <std::string>
{
private:std::vector<std::string> elems;public:void push(std::string const&);void pop();std::string top() const;bool empty() const{return elems.empty();}    int32_t getElemsSize() const{std::cout<<"string size"<<std::endl;return elems.size();}
};void Stack<std::string>::push(std::string const& elem)
{elems.push_back(elem);
}void Stack<std::string>::pop()
{if(elems.empty()) {throw std::out_of_range("empty stack");}elems.pop_back();
}std::string Stack<std::string>::top() const
{if(elems.empty()) {throw std::out_of_range("empty stack");}return elems.back();
}int main(int argc, char* argv[])
{Stack<int> int_stack;int_stack.push(10);int_stack.push(20);int_stack.push(30);std::cout<<int_stack.getElemsSize()<<std::endl;//std::stringStack<std::string> string_stack;string_stack.push("class");string_stack.push("int");string_stack.push("int64");string_stack.push("double");string_stack.push("float");std::cout<<string_stack.getElemsSize()<<std::endl;return 0;
}

2. 类模板的局部特化

类模板的局部特化(Partial Class Template Specialization)是指针对模板参数的部分特化,只针对某些特定的条件进行自定义实现的过程。通过局部特化,我们可以为满足特定条件的模板参数提供不同的实现。

示例

/** @brief: class complates* @complie: g++ -g *.cc -o d -std=c++11* @autor: your name* @date: 2023/08/22*/#include <iostream>
#include <vector>
#include <stdexcept>
#include <string>//局部特化
template <typename T, typename U>
class MyClass
{
public:void print() const{std::cout<<"typename and typename"<<std::endl;}
};template <typename T>
class MyClass<T, std::string>
{
public:void print() const{std::cout<<"typename and string"<<std::endl;}
};template <typename T>
class MyClass<T, double>
{
public:void print() const{std::cout<<"typename and double"<<std::endl;}
};int main(int argc, char* argv[])
{MyClass<int, int> int_myclass;int_myclass.print();MyClass<int, std::string> string_myclass;string_myclass.print();MyClass<int, double> double_myclass;double_myclass.print();return 0;
}

输出

typename and typename
typename and string
typename and double

3. 缺省模版实参

在函数模板的时候,可以将模板的参数定位为缺省值;即支持默认,也支持指定,使用起来更加的方便;

示例

/** @brief: class complates* @complie: g++ -g *.cc -o d -std=c++11* @autor: your name* @date: 2023/08/22*/#include <iostream>
#include <vector>
#include <deque>
#include <stdexcept>
#include <string>//缺省模版参数
template <typename T, typename CONT = std::vector<T>>
class Stack 
{
private:CONT elems;public:void push(T const&);void pop();T top() const;bool empty() const{return elems.empty();}    int32_t getElemsSize() const{        return elems.size();}
};template <typename T, typename CONT>
void Stack<T, CONT>::push(T const& elem)
{elems.push_back(elem);
}template <typename T, typename CONT>
void Stack<T, CONT>::pop()
{if(elems.empty()) {throw std::out_of_range("empty stack");}elems.pop_back();
}template <typename T, typename CONT>
T Stack<T, CONT>::top() const
{if(elems.empty()) {throw std::out_of_range("empty stack");}return elems.back();
}int main(int argc, char* argv[])
{//使用默认值Stack<int> int_stack;int_stack.push(10);int_stack.push(20);int_stack.push(30);std::cout<<int_stack.top()<<std::endl;//赋值类型Stack<double, std::deque<double>> double_stack;double_stack.push(10.11);double_stack.push(20.22);double_stack.push(30.33);std::cout<<double_stack.top()<<std::endl;return 0;
}

输出

30
30.33
http://www.15wanjia.com/news/53136.html

相关文章:

  • wordpress本地上传到网站国内新闻大事20条
  • 办公用品网站建设策划书专业竞价托管
  • 企业如何注册域名企业seo培训
  • 上海网站制作公司联系方式免费网络推广工具
  • 江苏网站建设公司百度竞价排名危机事件
  • 设计师a 网站免费b2b网站推广渠道
  • 做网站一般注册哪几类商标品牌策划方案模板
  • 职业规划ppt模板免费下载网站推广seo教程
  • 网站建设赚钱吗郑州seo实战培训
  • 有不花钱做网站免费b站推广入口
  • 网络公司做网站网络快速排名优化方法
  • 怎样给自己的店做网站seo技术培训学校
  • 程序员会搭建非法网站吗关键词免费下载
  • 泸州网站建设网站设计与网页制作
  • 哪些购物网站有做拼团活动营销策略4p分析怎么写
  • 梧州市网站建设广告网站大全
  • 电子商务网站建设概括谷歌排名算法
  • 网站建设杭州正规推广平台
  • 如何给网站做证书网络推广策划书
  • 网站开发e r图上海百度推广代理商
  • 做网站和seo哪个好手机如何制作一个网页链接
  • 网站服务器排行榜长沙seo优化排名推广
  • 阿里云空间部署网站吗手机刷网站排名软件
  • vs 2015可以做网站吗微信引流主动被加软件
  • 关于域名用于非网站用途的承诺书培训机构在哪个平台找
  • 香港做网站找谁网络推广赚钱项目
  • 内蒙古做网站百度搜索引擎算法
  • 信息技术九年级上册网站咋做在线seo短视频
  • 产品介绍网站模板下载地址品牌线上推广方案
  • 杭州建设公司网站策划营销推广方案