游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

folly学习(一)C中如何实现一个通用迭代器

  folly中实现了一个通用的迭代器,位于follydetailIterators。h
  通用迭代器一般由两部分组成,类型声明和操作符重载类型声明
  因为迭代器主要作用,是被算法调用,所以需要告诉算法,我有什么,并且它们的类型名字都是统一规定好的templateclassD,classV,classTagclassIteratorFacade{public:1、第一部分类型声明usingvaluetypeV;迭代器所指向的变量的类型usingreferencevaluetype;迭代器所指向的变量的引用类型usingpointervaluetype;迭代器所指向的变量的指针类型usingdifferencetypessizet;用来表示两个迭代器的距离usingiteratorcategoryTag;迭代器类型}
  上述类模板中的模板参数:D:表示继承该类的子类(CRTP)V:迭代器所指向的变量类型Tag:迭代器类型:
  std::forwarditeratortag
  std::bidirectionaliteratortag
  其中CRTP表示静态多态,静态多态最大的作用是,父类可以调用子类的函数。主要通过下面这一函数来实现:DasDerived(){returnstaticcastD(this);}
  在上述函数中staticcastD(this)将该类转化成了子类的引用,从而使得该类能够调用子类的函数。操作符重载
  对于一般的指针来说,一共有8个操作符需要重载:
  !后置前置后置前置templateclassD,classV,classTagclassIteratorFacade{public:1、第一部分类型声明usingvaluetypeV;迭代器所指向的变量的类型usingreferencevaluetype;迭代器所指向的变量的引用类型usingpointervaluetype;迭代器所指向的变量的指针类型usingdifferencetypessizet;用来表示两个迭代器的距离usingiteratorcategoryTag;迭代器类型2、第二部分操作符重载equal(lhs,rhs)中使用了子类的boolequal(Dconstrhs)const;函数friendbooloperator(Dconstlhs,Dconstrhs){returnequal(lhs,rhs);}friendbooloperator!(Dconstlhs,Dconstrhs){return!(lhsrhs);}使用了子类的referencedereference()const;函数Voperator()const{returnasDerivedConst()。dereference();}Voperator()const{returnstd::addressof(operator());}使用了子类的voidincrement();函数Doperator(){asDerived()。increment();returnasDerived();}Doperator(int){autoretasDerived();copyasDerived()。increment();returnret;}使用了子类的voiddecrement();函数Doperator(){asDerived()。decrement();returnasDerived();}Doperator(int){autoretasDerived();copyasDerived()。decrement();returnret;}private:将父类转化为子类DasDerived(){returnstaticcastD(this);}DconstasDerivedConst()const{returnstaticcastDconst(this);}staticboolequal(Dconstlhs,Dconstrhs){returnlhs。equal(rhs);}};
  使用的时候只要继承该类,并且实现以下四个方法voidincrement();voiddecrement();optional,tobeusedwithbidirectionalreferencedereference()const;boolequal(〔appropriateiteratortype〕constrhs)const;使用示例
  第一步、继承父类,指定父类模板中的模板参数structIntArrayIterator:IteratorFacadeIntArrayIterator,intconst,std::forwarditeratortag{}
  其中:IntArrayIterator:表示将自身的类型传给父类,使得父类能够调用子类的函数intconst:表示变量类型std::forwarditeratortag:表示迭代器类型
  第二步、添加构造函数和成员变量structIntArrayIterator:IteratorFacadeIntArrayIterator,intconst,std::forwarditeratortag{intconsta;explicitIntArrayIterator(intconsta):a(a){}};
  第三步、添加父类中调用的四个函数,因为这是个前向迭代器,所以实现实现三个函数就行structIntArrayIterator:IteratorFacadeIntArrayIterator,intconst,std::forwarditeratortag{explicitIntArrayIterator(intconsta):a(a){}voidincrement(){a;}intconstdereference()const{returna;}boolequal(IntArrayIteratorconstrhs)const{returnrhs。aa;}intconsta;};
  测试includeincludecassertincludeiostreaminclude。。follydetailIterators。husingnamespacefolly::detail;usingnamespacefolly;namespace{structIntArrayIterator:IteratorFacadeIntArrayIterator,intconst,std::forwarditeratortag{explicitIntArrayIterator(intconsta):a(a){}voidincrement(){a;}intconstdereference()const{returna;}boolequal(IntArrayIteratorconstrhs)const{returnrhs。aa;}intconsta;};}namespaceintmain(){usingTRstd::iteratortraitsIntArrayIterator;staticassert(std::issameTR::valuetype,intconst::value,);staticassert(std::issameTR::reference,intconst::value,);staticassert(std::issameTR::pointer,intconst::value,);staticassert(std::issameTR::iteratorcategory,std::forwarditeratortag::value,);staticassert(std::issameTR::differencetype,ssizet::value,);staticconstautokArraystd::arrayint,3{42,43,44};IntArrayIteratorend(kArray。data()kArray。size());IntArrayIteratoriter(kArray。data());assert(iter!end);assert(42iter);iter;assert(iter!end);assert(43iter);iter;assert(iter!end);assert(44iter);iter;assert(iterend);}

警惕技术性牟利沦为翻版大数据杀熟【光明时评】近日,上海市消保委发布的一项调查显示,统计上海市20家豪华型酒店后发现,三分之一的网络平台预订价高于酒店门市价格。这无疑打破了消费者对于线上消费便宜又省事儿的……一加手表公布赛博朋克2077限定版及银手表托5月24日预售IT之家5月21日消息一加官方今日宣布推出一加手表的赛博朋克2077限定版,以及银手表托。这款手表将以《赛博朋克2077》中最经典的黒与黄色为基本色,渲染出一种科技又迷离……这回稳了,再添一名猛将的自动驾驶公司禾多科技要数2021年自动驾驶领域发展势头强劲的企业,里面的名字肯定少不了禾多科技。禾多科技(北京)有限公司,成立于2017年,创始人倪凯,致力于打造基于前沿人工智能技术和汽车工……观点AI芯片需要生态,更是AIoT生态的重要一环Gartner预测,2020年至少50的搜索会采用语音方式,VUI自然语言交互将成为下一代人机交互界面,随之带来的是,业界更需要通过语音AI芯片实现端侧智能,提供更好的交互体验……2021上海车展重塑人车关系,思必驰智能语音技术指路出行2021年上海车展的开幕,激起了沉寂已久的汽车消费市场。其中市场表现不乏亮点:高端市场及新能源汽车销量稳步增长。智能科技的加持,成为消费者购车时的重要考量。辅助驾驶、智能……智见新可能林肯品牌携三款重磅新车及个性互动体验潮动2021成稳中求变,智见新可能。8月29日,2021年下半年首场重量级汽车盛会成都国际车展正式拉开帷幕。作为美式豪华领导品牌,林肯顺应消费升级的市场趋势,推出更年轻、更个性化的产品,不断……企业为什么需要拓展型crm系统?企业为什么需要拓展型crm系统?蓬勃发展的新技术为企业的发展提供了更多可能,数字化为企业发展带来了前所未有的巨大机遇,并已然渗透至各行各业,云服务软件是企业在这个时代最核……海兰一体机入驻京东自营双十一多款电脑优惠促销中随着尾款人吐槽话题的爆红,2021年双十一已经正式拉开帷幕。据了解,今年京东双11电脑数码品类销量再创新高,开场仅17秒,智能数码品牌就轻松破亿,电脑配件也取得成交额超今年6月……EN71玩具检测报告办理流程,CE认证EN71测试项目一、EN71认证简介EN71是欧盟市场玩具类产品规范标准。儿童是全社会关心和爱护的群体,儿童普遍喜爱的玩具市来场发展迅猛,玩具质量问题给儿童带的伤害也时有发生,因此世界各……前锋工作室多维度对比漫步者与JEET无线蓝牙耳机买谁划算?大家好,这里是前锋工作室,成立到现在已经五年多了,我们每周都会为大家带来一款数码产品的评测,这五年从没间断过。这周我们选择的是最热门的两款蓝牙耳机JEETONE升级版和漫步者l……约16万起售特斯拉全新轿车有望2023年亮相,或命名Mode日前,网络上曝光了一组特斯拉全新紧凑型轿车的渲染图。据悉,新车主打纯电紧凑型两厢车市场,起售价2。5万美元(约合16万人民币),竞争对手锁定大众ID。3等同级别产品。实际……GooglePlayStore下架数十款秘密收集个人信息的应DoNews4月8日消息(刘文轩)据华尔街日报报道,Google从PlayStore下架了数十款天气、高速公路雷达、二维码扫瞄器等应用程序,用户总数可能高达数百万人。下架原因是……
美系电动车混战电动野马对比ModelY,谁更香?自从纯电动车诞生后,汽车制造就不再局限在传统车企,科技企业的跨界给汽车带来了很多新的视角,也带来了更多的科技属性。在国内,造车新势力和传统车企造的车就有明显的区隔,同样作……SIM卡以及SD卡合体成为一个芯片也可以?现在已经到了什么都变得紧凑缩小的科技时代,虽然屏幕以及屏占比科技在追求更大更宽,可是很多东西却逐渐在缩小,现在竟然能够连SD卡的位子也省出来,与SIM卡合成一体。IDEM……华为Mate50华为当前的境况相信大家都清楚,因为多到面制约,华为所有手机均无法使用5G芯片,致使华为在很长一段时间内,都没有发布新机,虽然在多方努力之下,华为P50与华为Nova9均已发布,……阿里震动,雪梨被封,张大奕还好吗?最近,阿里巴巴做出了一个很大的调整,只是,大部分人没啥感觉。某猫某宝事业部的负责人蒋某,调整到了跨境电商事业部。这给出的信号是,国内零售市场,基本上见顶了,接下来阿里要主攻跨境……微信收款码将会停用吗?普通百姓生活该怎么办?杞人忧天转账,红包车到山前必有路,船到桥头自然直。这个不用担心。电子收费手段既然已经被普及了,这种手段就不会退回去。微信不能用了,可能会有其他信来代替它,这个……中国科技创新及中俄科技合作成果展上线部分项目赴俄参展中新社北京12月6日电(记者孙自法)中国科技创新及中俄科技合作成果展线上云展厅6日发布上线,共展出5个领域42个项目,其中12个项目赴俄参加线下展览。中国科技创新及中俄科……中国工程院院士郭仁忠城市如何数字化?要有好路还要有好车来源:南方日报智慧城市和数字政府要互相支撑。路再好,开拖拉机速度也上不去,反之也一样在2021(第十六届)中国电子政务论坛暨首届数字政府建设峰会上,中国工程院院士、深圳大学智慧……2000元左右的5G手机和1500的4G手机,该怎么选?分两头说:有钱人只买最贵的,不买最好的。无钱人只买便宜的,买不起最好的。所以,前者无需再论,后者看法有三:1。目前,5G市场还不成熟,基站还不够健全,5G手机还没有大量普……总想换手机是什么瘾?你好,男生对数码产品的热爱和女生喜欢化妆品和衣服是一样的,笔者认为总想换手机并不是什么瘾,而是一种热爱和喜欢,而且根据数据表明,现在很多人更换手机的周期变短,完完全全用坏一部手……全球首家直接硅片厂将竣工硅片价格或低于20美分2月27日,硅片制造商1366科技与其战略合作伙伴,韩华QCELLS马来西亚私人有限公司及其与母公司韩华QCELLS韩国公司(统称为韩华QCELLS)正式宣布了他们将突破性的直……通通下架!支付宝主动做出瘦身,网友现在认错了支付宝作为大家常用的支付工具,内置的应用也是覆盖支付宝用户的衣食住行,可以说通过支付宝就可以满足用户的基本生活需求。随着蚂蚁集团的日益壮大,支付宝功能也变得越来越丰富,几……高通骁龙895旗舰曝光基于4nm工艺制程近日爆料达人EvanBlass发布推特爆料:SM8450将会是高通下一代旗舰SoC,将继承骁龙X655G基带,并基于4nm工艺制程。CPU采用了基于ARMCortexV9……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网