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

如何搭建高品质网站网站建设的辅助软件

如何搭建高品质网站,网站建设的辅助软件,淘宝客不建立网站怎么做,精美动态ppt模板免费下载一、成员变量及其基本结构 1.基本结构模型 本质是一个带头双向循环列表#xff0c;将节点进行封装#xff0c;并且为了方便使用#xff0c;进行重定义 2.节点的封装定义 templateclass T//定义节点struct list_node{list_nodeT* _prev;list_nodeT…一、成员变量及其基本结构 1.基本结构模型 本质是一个带头双向循环列表将节点进行封装并且为了方便使用进行重定义 2.节点的封装定义 templateclass T//定义节点struct list_node{list_nodeT* _prev;list_nodeT* _next;T _data;list_node(const T x T()) :_prev(nullptr),_next(nullptr),_data(x){}}; 在定义节点时要注意将初始化一起进行封装完成提供默认构造函数 3.成员变量的定义 成员变量是一个哨兵位的头结点 typedef list_nodeT node;//对节点重命名方便使用 private:list_nodeT* _head; 二、迭代器重点 1.介绍 list的迭代器用原生指针无法实现需要对原生指针进行封装然后对顺序表指针的行为操作进行模拟实现是list模拟实现中最大的重点难点此时从使用者的角度上看依然能将iterator看作为指针去使用但设计者的角度上看其本质是一个指针的封装是个自定义类型。 2.对指针的基本封装 templateclass T struct __list_iterator {typedef list_nodeint node;//将节点重定义方便使用typedef __list_iteratorint self;//将类型重定义方便使用//成员变量node* _node;//初始化__list_iterator(node* n):_node(n){}//模拟实现指针操作... } 以上对节点指针进行了封装处理之后逐一实现常用的功能例如 、--、* 、 - 、 、! 等等 3.和-- 要提供迭代器和--的操作需要对运算符进行重载链表迭代器的本质上是获得下一个节点的地址--则是前一个节点的地址并且要区分前置和后置 //slef operator(){_node _node-_next;return *this;}slef operator(int)//后置{slef tmp(*this);_node _node- _next;return tmp;}//--self operator--(){_node _node-_prev;return *this;}self operator--(int){self tmp(*this);_node _node-_prev;return tmp;} 4. 和 ! 迭代器的比较本质是要比较其封装在内部的指针是否同一个 bool operator!(const self n) {return _node ! n._node; }bool operator(const self n) {return _node n._node; } 5. * 和 - 对解引用操作符的重载则需要考虑到常量迭代器的调用常量迭代器去本质是对迭代器所指向的内容进行常量化因此在这里const_iterator 和 iterator 的核心区别在于解引用后返回的值是否常量其他功能相同因此可以使用类模板去控制这两个运算符重载返回值的区别在定义部分加上两个新的模板参数即可。 templateclass T,class Ref,class Ptr strucr __list_iterator {...//定义和重命名等等Ref operator*()// Ref T迭代器 / const T常量迭代器{return _node-_data;}//对于-的重载存在特殊处理只需要返回Ptr operator-()// Ptr T*迭代器/ const T*常量迭代器{return _node-_data;} }// 迭代器定义部分在list类内定义 // typedef __list_iteratorT,T,T* iterator; // typedef __list_con_iteratorT,const T,const T*; 三、构造与析构 1.默认构造函数 默认构造需要初始化出一个哨兵位的头结点并且让节点指针指向自己为了方便其他构造函数初始化哨兵位的头结点可以单独写一个函数进行复用 void empty_init(){_head new node;_head-_next _head;_head-_prev _head;}list()//直接的初始化{empty_init();} 2.用迭代器区间去构造 迭代器区间构造需要借助函数模板任意类型的迭代器都可以将值拷贝到容器中 templateclass Iterator list(Iterator first,Iterator last) {//先得初始化容器empty_init();while(first ! last){push_back(*first); // 底层是first;} } 3.拷贝构造 拷贝构造这里选择对上面的构造函数进行复用深拷贝出一个tmp在进行交换 void swap(listT lt){std::swap(_head, lt._head);}list(const listT lt)//拷贝构造{empty_init();listT tmp(lt.begin(), lt.end());swap(tmp);} 4.赋值重载 赋值重载的底层实现也是在传参的时候调用了拷贝构造实现深拷贝后在进行交换 listT operator(listT lt)//赋值重载{swap(lt);return *this;} 5.析构函数 可以先实现clear然后复用底层就是将所有节点全部逐一释放用迭代器遍历释放即可 void clear(){iterator it begin();while (it ! end()){it erase(it);}}~list()//析构{clear();delete _head;_head nullptr;}四、增删操作 对应增删操作只需要实现insert和erase其余的头插头删等等都可以对其进行复用这里是用迭代器去实现的。 void insert(iterator pos, const T x){node* cur pos._node;node* prev cur-_prev;node* new_node new node(x);//链接new_node-_prev prev;prev-_next new_node;new_node-_next cur;cur-_prev new_node;}iterator erase(iterator pos){assert(pos ! end());node* cur pos._node;node* prev cur-_prev;node* next cur-_next;delete cur;//链接prev-_next next;next-_prev prev;return iterator(next);} 需要注意的是erase后迭代器会失效因此为了部分场景下的方便erase是有一个返回值的返回的是下一个节点的迭代器 总结 本章通过自行模拟实现了list加深了类和对象以及list的相关知识其中很重要的一个知识点就是对与list迭代器的封装和实现本篇博客整理了整个实现过程的思路方便今后复习和其他同学参考学习
http://www.dnsts.com.cn/news/108193.html

相关文章:

  • 厦门高端网站建设公网站如何做好优化
  • iis如何建立网站百度是不是门户网站
  • wordpress 网站上传到服务器错误用wordpress建站会不会显得水平差
  • 简述网站首页制作过程网站如何注册微信公众平台 类型
  • 非你莫属做网站的卖网币起家的做网站灰色网站怎么判刑
  • 商务网站建设实训过程利用html做博客网站
  • 好看的商城网站鄂州网站建设企业推广
  • 建设网站的网站叫什么男运动器材网站开发方案
  • 郑州网站网络营销圣诞树html网页代码
  • 网上书城网站开发的数据字典重庆市建设工程信息网官网工程押证
  • 网站服务器数据库wordpress获得菜单
  • 网站主持人制作方法浙江建设信息港成绩查询栏
  • 九江集团网站建设网站建设seo优化推广
  • 做电影资源网站手机版中核二三劳务公司招聘
  • 网站快速设计wordpress frp穿透
  • 电影网站源码access开天猫店需要什么条件多少钱
  • 一个小型网站开发成本公司自建网站备案
  • 渭南建站互联网企业包括哪些行业
  • 如何做网站访百度联盟运城建设银行网站
  • 房地产网站广告销售怎么做嘉兴信息网站
  • 河北网站制作公司电话网站域名绑定
  • 学什么可以先做网站2023房价即将暴涨十大城市
  • 做混剪素材网站vps 网站能打开
  • 网站开发客户端制作app软件
  • ie建设企业网站进去无法显示太原企业网站搭建
  • 婺源网站建设网页制作与网站建设
  • 网站建设怎么放到云空间鄠邑建站 网站建设
  • 长沙网站制作好公司谷歌推广新手教程
  • 长沙建设网站制作网站的ftp账号密码
  • 网站建设开发公司推荐指数网站设计优点