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

大连制作网站公司一步步教会你怎么做网站

大连制作网站公司,一步步教会你怎么做网站,土木工程招聘网最新招聘信息,音乐网站需求分析介绍 上一次介绍了list队容器的迭代器模拟#xff0c;这次模拟实现list的简单功能#xff0c;尤其要注意构造函数、析构函数、以及赋值运算符重载的实现。 list容器需要接纳所有类型的数据#xff0c;因此#xff0c;结构设置与迭代器设置同理#xff0c;需要引入结点这次模拟实现list的简单功能尤其要注意构造函数、析构函数、以及赋值运算符重载的实现。 list容器需要接纳所有类型的数据因此结构设置与迭代器设置同理需要引入结点数据。 //结点结构     templateclass T     struct ListNode     {         ListNodeT* _next;         ListNodeT* _last;         T _data;         ListNode(const T x T())             :_next(nullptr)             , _last(nullptr)             , _data(x)         { }     };     //list容器基本元素     templateclass T     class list     {     public:         typedef ListNodeT Node;           typedef _list_iteratorT iterator;     private:         Node* _node;  //此结点为哨兵结点前指头结点后指尾结点里面没有数据     }; 一构造函数 构造函数只需构造“ 哨兵结点 ”即可因为这里使用链式结构存储因此构造函数没有顺序结构那样的逻辑。代码如下 list() {     _node new Node;     _node-_last _node;     _node-_next _node; } 拷贝构造的实现可直接运用赋值运算符这里要注意由于这里的设计设计到动态空间的申请所以实现时需进行深拷贝。 这里我们先实现push_back尾插功能代码如下 //尾插功能 void push_back(const T x T())  {     Node* node new Node;     node-_data x;     node-_next _node;     node-_last _node-_last;     _node-_last-_next node;     _node-_last node; } 下面是赋值运算符和拷贝构造的实现唯一要注意的是在使用赋值运算符前要先确定“ 哨兵结点 ”即普通的构造函数。 //赋值运算符重载 listT operator(listT L) {     Node* node (L._node)-_next;     while (node ! L._node)     {         push_back(node-_data);         node node-_next;     }     return *this; } //拷贝构造函数 list(listT L) {     //哨兵结点的构造     _node new Node;     _node-_last _node;     _node-_next _node;     //赋值运算符的使用     *this L; } 下面进行样例代码测试 void test1() {     listint v1;     v1.push_back(1);     v1.push_back(2);     v1.push_back(3);     v1.push_back(4);     listint v2;     v2 v1;     listint v3(v1);     std::cout List v2: ;     for (auto e : v2)     {         std::cout e  ;     }     std::cout std::endl;     std::cout List v3: ;     for (auto e : v3)     {         std::cout e  ;     }     std::cout std::endl; } 测试数据结果 二析构函数 析构函数的设计只需诼渐释放所有结点即可包括“ 哨兵结点 ”。代码如下 ~list() {     Node* t _node-_next;     while (t ! _node)     {         Node* next t-_next;         delete t;         t next;     }     delete t;    //最后释放哨兵结点     t nullptr; } 三list容器接口 这里实现begin()、end()、push_back(这个接口上面已实现这里不做演示)、pop_back、push_front、pop_front。代码如下 iterator begin()  //获取头结点 {     return _node-_next; } iterator end()  //获取尾结点 {     return _node; } void pop_back()  //尾删 {     assert(_node-_next ! _node);     Node* node _node-_last-_last;     delete _node-_last;     _node-_last node;     node-_next _node; } void push_front(const T x T())  //头插 {     Node* node new Node;     node-_data x;     node-_next _node-_next;     node-_last _node;     _node-_next-_last node;     _node-_next node; } void pop_front()  //头删 {     assert(_node-_next ! _node);     Node* node _node-_next-_next;     delete _node-_next;     _node-_next node;     node-_last _node; } list容器常用功能有clear()、swap()、erase、insert。接口参数与实现如下 void clear() {     Node* t _node-_next;     while (t ! _node)     {         Node* next t-_next;         delete t;         t next;     }     t nullptr; } void swap(listT L) {     std::swap(_node, L._node); } iterator insert(iterator pos, const T x T()) {     Node* node new Node;     node-_data x;     node-_next pos.node;     node-_last (pos.node)-_last;     node-_next-_last node;     node-_last-_next node;     return node; } iterator erase(iterator pos) {     assert(pos.node ! _node);     Node* next (pos.node)-_next;     Node* last (pos.node)-_last;     delete pos.node;     next-_last last;     last-_next next;     return next; } 下面进行样例代码测试 void test2() {     listint v;     v.push_back(1);     v.push_back(2);     v.push_back(3);     v.push_back(4);     v.push_back(5);     listint::iterator it v.begin();     v.insert(it, 9);     v.erase(v.begin());     for (auto e : v)     {         std::cout e  ;     }     std::cout std::endl; } 测试数据结果如下 其它细节逻辑可自行测试这里不再一一演示。 总list容器的模拟实现跟部分容器可能有些难度这里注重要注意类型使用和转换迭代器的模拟以及构造赋值与析构。功能实现的逻辑基本与链式逻辑一样。
http://www.zqtcl.cn/news/536835/

相关文章:

  • icon图标素材下载网站郑州做定制网站的公司
  • 网站建设培训哪家好北京有几个区几个县
  • 县局网站建设招标最新网页游戏传奇
  • 咋么做进网站跳转加群代理记账公司如何寻找客户
  • 可以做pos机的网站app网站建设制作
  • 手机移动端网站影视摄影传媒公司
  • 做化工资讯的网站湖南省做网站的
  • 廊坊哪些公司做网站做网站域名是什么意思
  • 印刷网络商城网站建设上海那家公司做响应式网站建设
  • 四川省建设厅职称查询网站购物网站页面设计
  • 网站开发导航可以进不良网站的浏览器
  • 一个中介平台网站的建设费wordpress 文章列表只显示标题
  • 网站建设包括两个方面聊城建设路小学网站
  • 怎么样做一个自己的网站遵义软件制作平台
  • 推广网站实例建设厅的证在哪里查询
  • 分类网站建设方案做学校教务处网站
  • 如何做链接淘宝客的网站只做画册的网站
  • docker可以做网站吗专业的营销型网站
  • 重庆市建设工程安全网站上海制造网站公司
  • 咨询网站公司建设计划书安卓软件开发软件
  • 手机网站建设文章直播平台开发多少钱
  • 站长综合查询工具常用的网站开发语言有哪些
  • 免费网站看v片在线第一次做乌市seo网络营销流程
  • 社交网站模板下载柬埔寨网赌网站开发
  • 网站开发合同是否要交印花税杭州集团网站建设
  • 企业网站建设排名资讯一个公司做两个网站可以吗
  • 简单门户网站开发灰色行业seo大神
  • 网站开发学那种语言外贸推广网站建设
  • 公司网站建设及推广中国优秀企业网站欣赏
  • 个人代做网站建设京东类的网站需要什么流程