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

WordPress网站被恶意登录上海网络推广平台

WordPress网站被恶意登录,上海网络推广平台,云服务器免费虚拟主机,徐州网站建设案例最近重温了一下萃取发现其与constexpr有相似之处,记录如下。 一、引出萃取 STL的在中心思想是将容器和算法分开,再通过迭代器iterator这一迭代器来将两者粘合起来。 通过迭代器进行算法计算,需要涉及两个问题: 问题一.通常需要…

 最近重温了一下萃取发现其与constexpr有相似之处,记录如下。

一、引出萃取

STL的在中心思想是将容器和算法分开,再通过迭代器iterator这一迭代器来将两者粘合起来。

通过迭代器进行算法计算,需要涉及两个问题:

问题一.通常需要针对不同类型的迭代器进行不同的算法操作。需要在编译时期获取迭代器的类型信息。

以advance为例,对于random_access_iterator可以在O(1)的时间复杂度完成,但是对于bidirectional_iterator需要在O(n)的时间复杂度完成。

问题二.通常需要运用迭代器的相应型别,相应型别之一就是iterator所指向数据的类型。

C++支持sizeof(),但是不支持typeof()。即使通过RTTI的typeid()获取到类型名称,也不能进行变量声明使用。

解决办法:通过function template的函数推导可以获取到iterator所指向数据的类型。

template<typename Iter, typename T>
void func_impl(Iter iter, T t)
{T tmp;//这里解决了迭代器所指类型的型别问题...//函数实现
};
template<typename Iter>
void func(Iter iter)
{func_impl(iter, *iter);
};
int main
{vector<int> tmp_v = {1,2,3};func(tmp_v.begin());
}

迭代器常用的型别有五种,并不是每一种都可以通过template的参数推导机制获取,我们需要更全面的解法,即traits。

这五种型别是:

  1. value_type
  2. difference_type
  3. reference_type
  4. pointer_type
  5. iterator_category

Traits不是一种C++关键字或一个预定义的构件。

是一种技术,也是C++程序员需要共同遵守的协议。这个技术的要求之一是,它对内置类型或用户自定义类型的表现必须一样好。

“traits必须能够实施与内置类型”意味着“类型内的嵌套信息”这种东西就出局了,因为我们无法将信息嵌套在原始指针内。因此,类型的traits信息必须位于类型自身之外。

标准技术是把它放入一个template及其一个或多个特化版本中。这样的templates在标准程序库中有若干个,其中针对迭代器的被命名为iterator_traits。

template<typename T>//template用来处理迭代器型别的信息
struct iterator_traits;

问题一的答案是引入iterator_category;问题二答案是引入value_type。

二、iterator_category和value_type

iterator_category

iterator_traits的运作方式是针对每一个类型的IterT在struct iterator_traits<IterT>中使用typedef声明一个iterator_category。
这个typedef用来确认IterT的迭代器分类。

iterator_traits以两部分实现上述所言:

第一部分:

首先它要求每一个用户自定义的迭代器类型必须嵌套一个typedef,名为iterator_category,用来确认适当的卷标结构。

例如,deque的迭代器支持随机访问,所以 针对一个deque迭代器的设计如下

template<...>//略写tempalte参数
class deque
{
public:class iterator {public:typedef random_access_iterator_tag iterator_category;};
};

 list的iterator可以双向前进

template<...>//略写tempalte参数
class list
{
public:class iterator {public:typedef bidirectional_iterator_tag iterator_category;};
};

 至于iterator_traits只是类似地响应iterator class的嵌套式 typedef:

template<typename IterT>
class iterator_traits {typedef typename IterT::iterator_category iterator_category;...
};
第二部分:

第二部分专门用来应对指针。

上述方法对用户自定义的Iter类型行得通,但是不适用于指针类型,因为指针不可能嵌套typedef。

因为支持指针迭代器,iterator_traits还特别对指针类型提供了一个偏特化版本。由于指针的行径与random_access迭代器类似,所以iterator_traits为指针指定的迭代器类型是:

template<typename IterT>
struct iterator_traits<IterT*>
{typedef random_access_iterator_tag  iterator_category;...
};

三、constexpr与萃取相关联

---------------------------------有待续写---------------------------------------------------

http://www.khdw.cn/news/24527.html

相关文章:

  • 网站集约建设报告2024年3月新冠高峰
  • 户外网站做百度推广费用可以退吗
  • wordpress插件 stock南昌seo外包公司
  • 贵阳有做网站的公司吗百度首页排名代发
  • 深圳建模板网站谷歌sem和seo区别
  • 手机搭建本地网站软件外包
  • 沈阳网站前端百度电话号码
  • 程序员创业做网站做公众号单页关键词优化费用
  • 外文网站做t检验分析优质的seo快速排名优化
  • 网站天天做收录有效果吗俄罗斯搜索引擎
  • wordpress幻灯片错误张家口网站seo
  • 网站建设应重视后期的服务和维护百度sem推广具体做什么
  • 自己怎么免费做网站拼多多关键词优化步骤
  • 什么网站做的最好百度网页广告怎么做
  • 做网站怎么变现口碑营销名词解释
  • 苏州书生商友专业做网站网络优化器
  • 备案域名买卖郑州seo外包阿亮
  • vs 团队网站开发绍兴seo网站管理
  • 软件网站建设基本流程图百度推广售后服务电话
  • 做宠物服务的相关网站站长工具国色天香
  • 深圳网站制作的公司广州网站seo推广
  • 手机网站开发 教程河北seo网络优化师
  • 网站参数拼多多关键词排名在哪里看
  • 网站设计排名北京头条广告入口
  • 济南网站建设方案案例展示热词搜索排行榜
  • 长宁区网站建设网最全的百度网盘搜索引擎
  • 如何在阿里巴巴建设网站如何搭建一个网站
  • 雅安公司做网站seo线上培训班
  • 长沙移动网站建设广州搜索seo网站优化
  • 线上推广有哪些方式百度排名优化工具