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

网站做的相似做网站用哪个编程语言

网站做的相似,做网站用哪个编程语言,做一个英文网站多少钱,河南省公共资源交易中心本文主要介绍类模板的特化、局部特化和缺省模板实参; 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.yayakq.cn/news/25280/

相关文章:

  • 长垣住房和城乡建设局 网站sem是什么职业
  • htm网站开发 实训网站模板设计工具
  • 江都城乡建设局网站网页建设软件
  • 白之家 低成本做网站网站如可引导客户
  • 墨刀做网站单位网站建设 管理制度
  • 焦作网站开发公司小程序开发教程知乎
  • 网站建设商标属于哪个类别机械制造设备类企业网站织梦模板
  • 做滤芯的网站群晖 wordpress 配置文件
  • asp.net mvc 做网站长治网站制作厂家
  • 做微商在哪个网站打广告好柳州建设网栗园新居
  • 手机建公司网站网站建设属于什么类的采购
  • 国外优秀的平面设计网站手机商城app开发公司
  • 网站主持人制作方法wordpress 图片收录
  • 怎样做网站后台优化快速排名新
  • 90设计网站可以商用吗濮阳网络电视台
  • 久久建筑网论坛关键词排名优化提升培训
  • wordpress登陆logo湛江市seo网站设计哪里好
  • 京东pc网站用什么做的dnf怎么做发卡网站
  • 响应式网站展示型网站建设制作模板
  • 遵义制作公司网站的公司十大跨境电商公司排名
  • 在线公司网站查询wordpress文章保存目录
  • 手机网站免费优化湖南外发加工网
  • 门户网站 特点电商网站代码设计
  • 辽宁省建设安装集团网站微信短网址生成
  • 网站应如何设计协会工作方案网站建设困难
  • 自己建网站百度到吗做网站需要用什么开发软件
  • 当涂 微网站开发公司正规游戏代理平台
  • 谁给推荐一个免费的好网站织梦网站建设交流群
  • 湛江网站关键词优化前端工作好找吗
  • 唐山做企业网站公司html企业网站模板