STL中迭代器(Iterator)的简单实现-创新互联
#pragma once struct InputIteratorTag {}; struct OutputIteratorTag {}; struct ForwardIteratorTag : public InputIteratorTag {}; struct BidirectionalIteratorTag : public ForwardIteratorTag {}; struct RandomAccessIteratorTag : public BidirectionalIteratorTag {}; template站在用户的角度思考问题,与客户深入沟通,找到鸡冠网站设计与鸡冠网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名与空间、虚拟空间、企业邮箱。业务覆盖鸡冠地区。struct InputIterator { //typedef T ValueType; //typedef Distance DifferenceType; //typedef T* Pointer; //typedef T& Reference; typedef InputIteratorTag IteratorCategory; //迭代器的类型 ( 包括上面那5个struct ) }; template struct IteratorTraits { //typedef typename Iterator::ValueType ValueType; //typedef typename Iterator::DifferenceType DifferenceType; //typedef typename Iterator::Pointer Pointer; //typedef typename Iterator::Reference Reference; typedef typename InputIterator ::IteratorCategory IteratorCategory; }; template struct IteratorTraits //内置类型的特化版本 { typedef RandomAccessIteratorTag IteratorCategory; }; template inline size_t Distance(InputIterator first, InputIterator last) { return _Distance(first, last, IteratorTraits ::IteratorCategory() ); //这里第三个参数 并没有实际意义,不过正是它的存在,让_Distance实现重载 } template inline size_t _Distance(InputIterator first, InputIterator last, RandomAccessIteratorTag) { return last - first; } template inline size_t _Distance(InputIterator first, InputIterator last, InputIteratorTag) { size_t n = 0; while (first != last) { ++first; ++n; } return n; }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:STL中迭代器(Iterator)的简单实现-创新互联
转载源于:http://abwzjs.com/article/gpgps.html