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

中企动力做网站费用张家口北京网站建设

中企动力做网站费用,张家口北京网站建设,首页wordpress主题,哪个微信公众号有a From: http://blog.sina.com.cn/s/blog_65d069c601010fb3.html 说起C的模板及模板特化#xff0c; 相信很多人都很熟悉 #xff0c;但是说到模板特化的几种类型#xff0c;相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型#xff0c; 一是特化…From: http://blog.sina.com.cn/s/blog_65d069c601010fb3.html 说起C的模板及模板特化 相信很多人都很熟悉 但是说到模板特化的几种类型相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型 一是特化为绝对类型 二是特化为引用指针类型三是特化为另外一个类模板。 这里用一个简单的例子来说明这三种情况 // general version templateclass T class Compare { public: static bool IsEqual(const T lh, const T rh) { return lh  rh; } };这是一个用于比较的类模板里面可以有多种用于比较的函数 以IsEqual为例。 一、特化为绝对类型 也就是说直接为某个特定类型做特化这是我们最常见的一种特化方式 如特化为float, double等 // specialize for float template class Comparefloat { public: static bool IsEqual(const float lh, const float rh) { return abs(lh - rh)  10e-3; } }; // specialize for double template class Comparedouble { public: static bool IsEqual(const double lh, const double rh) { return abs(lh - rh)  10e-6; } }; 二、特化为引用指针类型 这种特化我最初是在stl源码的的iterator_traits特化中发现的 如下 template class _Iterator struct iterator_traits { typedef typename _Iterator::iterator_category iterator_category; typedef typename _Iterator::value_type value_type; typedef typename _Iterator::difference_type difference_type; typedef typename _Iterator::pointer pointer; typedef typename _Iterator::reference reference; }; // specialize for _Tp* template class _Tp struct iterator_traits_Tp* { typedef random_access_iterator_tag iterator_category; typedef _Tp value_type; typedef ptrdiff_t difference_type; typedef _Tp* pointer; typedef _Tp reference; }; // specialize for const _Tp* template class _Tp struct iterator_traitsconst _Tp* { typedef random_access_iterator_tag iterator_category; typedef _Tp value_type; typedef ptrdiff_t difference_type; typedef const _Tp* pointer; typedef const _Tp reference; }; 当然除了T*, 我们也可以将T特化为 const T*, T, const T等以下还是以T*为例 // specialize for T* templateclass T class CompareT* { public: static bool IsEqual(const T* lh, const T* rh) { return CompareT::IsEqual(*lh, *rh); } };这种特化其实是就不是一种绝对的特化 它只是对类型做了某些限定但仍然保留了其一定的模板性这种特化给我们提供了极大的方便 如这里 我们就不需要对int*, float*, double*等等类型分别做特化了。 三、特化为另外一个类模板 这其实是第二种方式的扩展其实也是对类型做了某种限定而不是绝对化为某个具体类型如下 // specialize for vectorT templateclass T class ComparevectorT  { public: static bool IsEqual(const vectorT lh, const vectorT rh) { if(lh.size() ! rh.size()) return false; else { for(int i  0; i  lh.size(); i) { if(lh[i] ! rh[i]) return false; } } return true; } }; 这就把IsEqual的参数限定为一种vector类型 但具体是vectorint还是vectorfloat 我们可以不关心 因为对于这两种类型我们的处理方式是一样的我们可以把这种方式称为“半特化”。 当然 我们可以将其“半特化”为任何我们自定义的模板类类型 // specialize for any template class type template class T1  struct SpecializedType { T1 x1; T1 x2; }; template class T class CompareSpecializedTypeT  { public: static bool IsEqual(const SpecializedTypeT lh, const SpecializedTypeT rh) { return CompareT::IsEqual(lh.x1  lh.x2, rh.x1  rh.x2); } }; 这就是三种类型的模板特化 我们可以这么使用这个Compare类 // int int i1  10; int i2  10; bool r1  Compareint::IsEqual(i1, i2); // float float f1  10; float f2  10; bool r2  Comparefloat::IsEqual(f1, f2); // double double d1  10; double d2  10; bool r3  Comparedouble::IsEqual(d1, d2); // pointer int* p1  i1; int* p2  i2; bool r4  Compareint*::IsEqual(p1, p2); // vectorT vectorint v1; v1.push_back(1); v1.push_back(2); vectorint v2; v2.push_back(1); v2.push_back(2); bool r5  Comparevectorint ::IsEqual(v1, v2); // custom template class  SpecializedTypefloat s1  {10.1f,10.2f}; SpecializedTypefloat s2  {10.3f,10.0f}; bool r6  CompareSpecializedTypefloat ::IsEqual(s1, s2);
http://www.huolong8.cn/news/322411/

相关文章:

  • 房屋和建设工程信息平台seo2短视频发布
  • 网站后台登陆不进去微商做网站网站
  • 山东教育网站开发公司程序开发软件有哪些
  • 做外贸如何通过网站精准找到老板联系方法唐山住房和城乡建设局网站
  • 微信长图的免费模板网站重庆在线官网
  • 遵义做网站多少钱小程序制作公司排名
  • 手机网站缩放wordpress 主题 音乐
  • 山西做网站的公司哪个好山东建设银行官方网站
  • 建设企业网站模板下载企业网站网站建设公司
  • 网站建设与维护 书代做网页设计
  • 展示型网站与营销型网站区别哪几个做内贸的网站比较好一点
  • 医疗行业企业网站建设石家庄市建设南大街小学网站
  • 云服务器网站崩溃的原因办办网登陆
  • 网站建设公众号小程序推广开发视频制作课程
  • 水墨网站设计欣赏世界杯数据分析
  • 网站建设方案 filetype doc建网站软件 优帮云
  • 网站接单做项目渠道网创业加盟博览会
  • 网站制作 视频大良营销网站建设流程
  • 东莞网站建设对比wordpress 国内不使用
  • 潍坊网站制作公司深圳公司注册需要资料
  • 行业网站网址怎么快速做网站排名
  • 网站开发前端库网上电子商城系统
  • wordpress 使用七牛免费网站建设seo
  • 做网站拍幕布照是什么意思网站策划的最终体现是撰写网站策划书
  • 网站内链wordpress插件网站设计公司北京
  • 网站开发外文文献大连网站优化方案
  • 网站建设人员任职要求wordpress免费博客主题
  • 手机论坛网站怎么做网络营销概论
  • 个人信息查询新站seo优化快速上排名
  • 怎么做网站静态布局南昌网站开发培训中心