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

wordpress博客福利网整站源码嘉定营销型 网站制作

wordpress博客福利网整站源码,嘉定营销型 网站制作,学校网站建设目标,广州正规网站建设哪家好1.模板的模板参数 在C中,模板的模板参数(Template Template Parameters)是一种特殊的模板参数,允许我们将另一个模板作为模板参数传递给一个模板。这种技术可以用于实现更灵活和通用的模板设计。 模板的模板参数使用两个 “temp…

1.模板的模板参数

在C++中,模板的模板参数(Template Template Parameters)是一种特殊的模板参数,允许我们将另一个模板作为模板参数传递给一个模板。这种技术可以用于实现更灵活和通用的模板设计。

模板的模板参数使用两个 “template” 关键字来指示,其中第一个 “template” 用于声明模板参数,第二个 “template” 用于声明模板模板参数本身。通常情况下,还需指定模板模板参数的参数列表。

先观察一下示例:

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();}
};

上面示例在使用的过程中,要不使用默认值,要不需要两次指定元素类型

Stack<int> int_stack;   //使用默认值Stack<double, std::deque<double>> double_stack;	   //指定两次元素类型double

然而,借助于模板的模板参数,可以指定容器的类型而不需要指定所含元素的类型,这样在声明的时候可以使用Stack<double, std::deque> double_stack

2.实现方法

为了实现上述的特性,需要将第2个模板参数指定为模板的模板参数,那么Stack的声明如下:

template <typename T, template<typename ELEM> class CONT = std::vector >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, template<typename ELEM> class CONT = std::vector >必须使用class,CONT是为了定义一个类,只能使用class
  • 上面的示例无法使用,因为std::vector和模板的模板参数CONT不匹配,这里需要补充缺省值内存分配器allocator;

最终示例:

/** @brief: class complates* @complie: g++ -g *.cc -o d -std=c++11* @autor: your name* @date: 2023/08/27*/#include <iostream>
#include <vector>
#include <deque>template <typename T, template <typename ELEM, typename ALLOC = std::allocator<ELEM> > class CONT = std::vector>
class Stack 
{
private:CONT<T> 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, template <typename, typename> class CONT>
void Stack<T, CONT>::push(T const& elem)
{elems.push_back(elem);
}template <typename T, template <typename, typename> class CONT>
void Stack<T, CONT>::pop()
{if(elems.empty()) {throw std::out_of_range("empty stack");}elems.pop_back();
}template <typename T, template <typename, typename> class 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_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;
}

3.特别说明

template <typename T, template <typename ELEM, typename ALLOC = std::allocator<ELEM> > class CONT = std::vector>中第二个参数其实本身就是一个类模板,可以将其摘出来进行进一步的分析;

#include <iostream>
#include <vector>
#include <deque>template <typename ELEM, typename ALLOC = std::allocator<ELEM> > 
class CONT
{
public:void printInfo(){std::cout<<"print info"<<std::endl;}
};int main(int argc, char* argv[])
{CONT<int> C;C.printInfo();return 0;
}

template <typename T, template <typename ELEM, typename ALLOC = std::allocator<ELEM> > class CONT = std::vector> 中,CONT接受的类型其实就是T,当然换成其他的类型也可以;

http://www.yayakq.cn/news/405487/

相关文章:

  • 品牌网站建设預定大蝌蚪成都住建局官网查房源
  • 网站建设 费用 入哪个科目wordpress与dede哪个好用
  • 陕西培训网站建设指数是什么意思
  • 网站加入搜索引擎怎么做小程序二维码
  • 网站建设文章缩略图杭州行业网页设计公司
  • 学校信息门户网站建设东莞网站推广方式
  • 单位网站建设的目的wordpress 获取所有菜单
  • 门户网站改版方案网站生成静态慢原因
  • 深圳做网站要多电子商务网站建设目标及利益分析
  • 苏州网站设计公司排名怎么做app界面设计
  • 网站建设十年杜绝模板宿迁网络科技有限公司
  • 免费域名查询网站微信文档
  • 网站建设 入门知识松江网站设计
  • 济南君哲网站建设公司外贸建站模版
  • 做婚恋交友类网站抖音广告推广怎么做
  • 湘潭九华网站wordpress-黄聪
  • 最好的国际贸易网站wordpress音乐页面面板
  • 怎么把网站提交wordpress title 分类
  • 江苏路街道网站建设免费的网页设计成品资源
  • 做平台还要做网站吗thinphp 做外贸网站
  • 做网站建设的公司有哪些方面wordpress调用视频播放器
  • 重庆自助建站网站宁波优化网站排名公司推荐
  • 南宁建设职业技术学院招聘信息网站狭义的网络营销
  • 网站需要什么服务器wordpress 网络公司主题
  • 表白网页在线生成网站兰州网站建设推荐q479185700上快
  • 广州注册公司在哪个网站小程序和网站开发难度
  • 湖南城乡建设厅网站网站架构建设方案
  • iis网站筛选器被挂马网站建设是属于虚拟产品吗
  • 湖南长沙天气营销软件知名乐云seo品牌
  • wordpress 跨站领导不愿意做招聘网站怎么办