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

微信投票网站制作展示型网站建设流程方案

微信投票网站制作,展示型网站建设流程方案,免费注册建网站,国内外十大免费crm视频软件阅前提要#xff1a; 本文主要是对list和vector的实现的补充#xff0c;以代码实现为主#xff0c;注释为辅#xff0c;如果对vector#xff0c;list底层实现感兴趣的可以自行阅读#xff0c;代码量有点大#xff0c;请大家耐心查看#xff0c;对理解语言很有帮助 本文主要是对list和vector的实现的补充以代码实现为主注释为辅如果对vectorlist底层实现感兴趣的可以自行阅读代码量有点大请大家耐心查看对理解语言很有帮助本文的实现方式并不是stl标准库中的实现但大致的思路一样 一、反向迭代器的实现 实现思想反向迭代器和正向迭代器的不同点只在于--时迭代器的移动方向不同其他的操作基本一样我们可以对正向迭代器进行封装从而得到反向迭代器代码如下 namespace zxws {// 适配器 -- 复用//这里细节关键在于模板参数可以传任何一个容器的正向迭代器//即只要该容器的正向迭代器实现了那么反向迭代器也就实现了(这就是模板的力量)templateclass Iterator, class Ref, class Ptrstruct Reverse_iterator{Iterator _it;//这是正向迭代器typedef Reverse_iterator Self;Reverse_iterator(Iterator it):_it(it){}bool operator(const Self s){return _it s._it;}bool operator!(const Self s){return _it ! s._it;}//这个函数的实现和我们默认的rbegin()和rend()的位置有关//下面的代码实现是默认rbegin()是end() rend()是begin()Ref operator*(){Iterator cur _it;return *(--cur);}Ptr operator-(){return (operator*());}Self operator(){--_it;return *this;}Self operator--(){_it;return *this;}Self operator(int){Self tmp(_it);--_it;return tmp;}Self operator--(int){Self tmp(_it);_it;return tmp;}}; } 二、list的实现 思路本质和数据结构中的双向循环链表一样只是用C的语法实现的不同点在迭代器 代码如下 namespace zxws {templateclass Tstruct Node {T _val;Node* _next;Node* _pre;Node(const T xT()):_val(x),_next(nullptr),_pre(nullptr){}};//正向迭代器的实现templateclass T,class Ref,class Ptrstruct Iterator {typedef NodeT Node;typedef Iterator Self;Node* node;Iterator(Node* p):node(p){}Self operator(){node node-_next;return *this;}Self operator--(){node node-_pre;return *this;}Self operator(int){Self tmp(node);node node-_next;return tmp;}Self operator--(int){Self tmp(node);node node-_pre;return tmp;}Ref operator*(){return node-_val;}Ptr operator-(){return node-_val;}bool operator(const Self tmp){return node tmp.node;}bool operator!(const Self tmp){return node ! tmp.node;}};templateclass Tclass list{public:typedef NodeT Node;typedef IteratorT, T, T* iterator;typedef IteratorT,const T,const T* const_iterator;iterator begin(){return iterator(_head-_next);}const_iterator begin() const{return const_iterator(_head-_next);}iterator end(){return iterator(_head);}const_iterator end() const{return const_iterator(_head);}typedef Reverse_iteratoriterator, T, T* reverse_iterator;typedef Reverse_iteratorconst_iterator, const T, const T* const_reverse_iterator;//对rbegin(),rend()的位置的定义//与反向迭代器中解引用运算符的重载实现有关reverse_iterator rbegin(){return reverse_iterator(end());}const_reverse_iterator rbegin() const{return const_reverse_iterator(end());}reverse_iterator rend(){return reverse_iterator(begin());}const_reverse_iterator rend() const{return const_reverse_iterator(begin());}list(){init();}void init(){_head new Node;_head-_next _head;_head-_pre _head;}~list(){clear();delete _head;_head nullptr;}void clear(){auto cur begin();while(cur!end()){cur erase(cur);}}list(const list tmp){init();for(auto x:tmp){push_back(x);}}list operator(list tmp){swap(tmp);return *this;}void swap(list tmp){std::swap(_head, tmp._head);}void push_back(const T x){insert(x, end());}void push_front(const T x){insert(x, begin());}void pop_back(){erase(--end());}void pop_front(){erase(begin());}iterator insert(const T x, iterator pos){Node* cur pos.node;Node* pre cur-_pre;Node* newnode new Node(x);newnode-_next cur;cur-_pre newnode;newnode-_pre pre;pre-_next newnode;return newnode;//类型转化}iterator erase(iterator pos){assert(pos ! end());Node* cur pos.node;Node* next cur-_next;cur-_next-_pre cur-_pre;cur-_pre-_next cur-_next;delete(cur);return next;//类型转化}private:Node* _head nullptr;}; } 三、vector的实现 思路本质和数据结构中的动态数组一样只是用C的语法实现的不同点在迭代器 namespace zxws {template class Tclass vector{public:typedef T* iterator;typedef const T* const_iterator;iterator begin(){return _start;}const_iterator begin() const{return _start;}iterator end(){return _finish;}const_iterator end() const{return _finish;}//,--,,!,*,-没必要写因为vector迭代器底层是指针是内置类型能够自己实现--比较大小等操作typedef Reverse_iteratoriterator, T, T* reverse_iterator;typedef Reverse_iteratorconst_iterator, const T, const T* const_reverse_iterator;reverse_iterator rbegin(){return reverse_iterator(end());}const_reverse_iterator rbegin() const{return const_reverse_iterator(end());}reverse_iterator rend(){return reverse_iterator(begin());}const_reverse_iterator rend() const{return const_reverse_iterator(begin());}vector(){}vector(const vector tmp){if (tmp.size()){_finish _start new T[tmp.capacity()];for (auto x : tmp)*(_finish) x;_end_of_storage _start tmp.capacity();}}void swap(vector tmp){std::swap(_start, tmp._start);std::swap(_finish, tmp._finish);std::swap(_end_of_storage, tmp._end_of_storage);}vector operator(vector tmp){swap(tmp);return *this;}~vector(){delete[] _start;_start nullptr;_finish nullptr;_end_of_storage nullptr;}T operator[](size_t pos){assert(pos size());return _start[pos];}const T operator[](size_t pos) const{assert(pos size());return _start[pos];}void push_back(const T x){if (_finish _end_of_storage){reserve(capacity() 0 ? 4 : capacity() * 2);}*_finish x;_finish;}void pop_back(){assert(size() 0);--_finish;}void resize(size_t n, const T x T()){if (nsize()){reserve(n);for (int i size(); i n; i)_start[i] x;}_finish _start n;}void reserve(size_t n){if (capacity() n){size_t sz size();T* tmp new T[n];for (size_t i 0; i sz; i)tmp[i] _start[i];delete[] _start;_start tmp;_finish _start sz;_end_of_storage _start n;}}iterator insert(iterator pos,const T x){assert(pos_startpos_finish);if (_finish _end_of_storage){size_t len pos - _start;reserve(capacity() 0 ? 4 : capacity() * 2);pos _start len;}iterator it _finish;while (it pos){*it *(it - 1);it--;}_finish;*pos x;return pos;}iterator erase(iterator pos){assert(pos _start pos _finish);iterator cur pos;while (cur _finish - 1){*cur *(cur 1);cur;}--_finish;return pos;}size_t size(){return _finish - _start;}size_t capacity(){return _end_of_storage - _start;}private:T* _start nullptr;T* _finish nullptr;T* _end_of_storage nullptr;}; }
http://www.hkea.cn/news/14510150/

相关文章:

  • 网站建设在哪块做wordpress th7好卡
  • php p2p网站建设网站建设如何提高浏览量
  • 网站建设的整体流程有哪些?兰州模板网站建设
  • dede分类信息网站电商网站建设实训要求
  • 沈阳网站建设专业公司山东省建设厅网站特种作业
  • 学建设网站及功能网页设计的背景与意义
  • 怎么样网站速度快全局右下角弹窗wordpress
  • 网站建设mfdos 优帮云从网上怎么做网站营销
  • 网站的建设方式济南网站建设 刘彬彬
  • 快速网站开发课程wordpress主机在哪里看
  • 江西省住房城乡建设厅网站网站转回国内
  • 合肥制作网站价格交互设计是做什么的
  • 1个服务器可以做多少个网站擦彩网站开发
  • 网站在哪里建立中国建设银行网上银行官网
  • 网站的平面设计图用ps做学校网站建设的重要性
  • net网站开发框架做电商的步骤
  • 房产如何做网站网站推送
  • 深圳企业做网站公司国外vps
  • 学校网站建设的意见怎么制作网站教程图片
  • 做手机网站用什么程序好昆明seo关键词
  • 网站空间稳定性wordpress 移动端不显示
  • 企业网站html模板男女做受视频网站
  • 中融木业网站是那个网站做的怎么注册公司官网
  • 广州网站建设定制价格做网站零成本
  • 岳阳市 网站建设做公众号和网站主页的区别
  • 网站开发示例溧阳企业网站建设价格
  • 网站建设的意义以及重要性自建域名
  • 联想网站建设摘要网络营销策划方案展示
  • 福建省建设厅网站职业资格建筑工程网站监理答案
  • 网站宣传和推广的方法有哪些做数据权威的网站