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

阿里云企业网站建设教程googleapis wordpress

阿里云企业网站建设教程,googleapis wordpress,做公司网站方案,wordpress个人中心页目录 1、前言 2、List.h 3、Test.cpp 1、前言 1. 简单实现std::list#xff0c;重点#xff1a;迭代器#xff0c;类模板#xff0c;运算符重载。 2. 并不是#xff0c;所有的类#xff0c;都需要深拷贝#xff0c;像迭代器类模板#xff0c;只是用别的类的资源重点迭代器类模板运算符重载。 2. 并不是所有的类都需要深拷贝像迭代器类模板只是用别的类的资源不需要深拷贝。 3. 高度相似 - 模板。 4. 迭代器的种类 按功能iteratorreverse_iteratorconst_iteratorconst_reverse_iterator。 按结构(性质)决定可以使用什么算法 单向(Forward)forward_list/unordered_map/unordered_set    双向(Bidirectional)list/map/set    /-- 随机(Random Access)vector/string/deque    /--//- 2、List.h #pragma once#include iostream #include list #include assert.husing namespace std;namespace Lzc {templateclass Tstruct list_node{typedef list_nodeT Node;T _data;Node* _next;Node* _prev;list_node(const T data T()):_data(data), _next(nullptr), _prev(nullptr){}};//templateclass T//struct list_iterator//{// typedef list_nodeT Node;// typedef list_iteratorT iterator;// Node* _node;// list_iterator(Node* node)// :_node(node)// {}// T operator*() const// {// return _node-_data;// }// T* operator-() const// {// return _node-_data;// }// iterator operator() // 前置// {// _node _node-_next;// return *this;// }// iterator operator(int) // 后置// {// iterator tmp(_node);// _node _node-_next;// return tmp;// }// iterator operator--() // 前置--// {// _node _node-_prev;// return *this;// }// iterator operator--(int) // 后置--// {// iterator tmp(_node);// _node _node-_prev;// return tmp;// }// bool operator!(const iterator it) const// {// return _node ! it._node;// }// bool operator(const iterator it) const// {// return _node it._node;// }//};//templateclass T//struct list_const_iterator//{// typedef list_nodeT Node;// typedef list_const_iteratorT const_iterator;// Node* _node;// list_const_iterator(Node* node)// :_node(node)// {// }// const T operator*() const// {// return _node-_data;// }// const T* operator-() const// {// return _node-_data;// }// const_iterator operator() // 前置// {// _node _node-_next;// return *this;// }// const_iterator operator(int) // 后置// {// iterator tmp(_node);// _node _node-_next;// return tmp;// }// const_iterator operator--() // 前置--// {// _node _node-_prev;// return *this;// }// const_iterator operator--(int) // 后置--// {// iterator tmp(_node);// _node _node-_prev;// return tmp;// }// bool operator!(const const_iterator it) const// {// return _node ! it._node;// }// bool operator(const const_iterator it) const// {// return _node it._node;// }//};// 高度相似-模板templateclass T, class Ref, class Ptrstruct list_iterator{typedef list_nodeT Node;typedef list_iteratorT, Ref, Ptr Self;Node* _node;list_iterator(Node* node) // 就是要指针浅拷贝没问题:_node(node){}Ref operator*() const{return _node-_data;}Ptr operator-() const{return _node-_data;}Self operator() // 前置{_node _node-_next;return *this;}Self operator(int) // 后置{Self tmp(_node);_node _node-_next;return tmp;}Self operator--() // 前置--{_node _node-_prev;return *this;}Self operator--(int) // 后置--{Self tmp(_node);_node _node-_prev;return tmp;}bool operator!(const Self it) const{return _node ! it._node;}bool operator(const Self it) const{return _node it._node;}};templateclass Tclass list{typedef list_nodeT Node; // 只有list类的成员函数或者友元才能使用这个类型别名public:typedef list_iteratorT, T, T* iterator;typedef list_iteratorT, const T, const T* const_iterator;//typedef list_iteratorT iterator;//typedef list_const_iteratorT const_iterator;iterator begin(){return _head-_next; // 隐式类型转换}iterator end(){return _head;}const_iterator begin() const{return _head-_next;}const_iterator end() const{return _head;}void empty_initialize(){_head new Node;_head-_next _head-_prev _head;_size 0;}list(){empty_initialize();}list(initializer_listT lt){empty_initialize();for (auto e : lt){push_back(e);}}list(const list lt){// list();构造函数不能被直接调用empty_initialize();for (auto e : lt){push_back(e);}}void swap(list tmp){std::swap(_head, tmp._head);std::swap(_size, tmp._size);}list operator(const list lt){list tmp(lt);swap(tmp);return *this;}void clear(){while (!empty()){pop_front();}}~list(){clear();delete _head;_head nullptr;_size 0;}size_t size() const{return _size;}bool empty() const{return _size 0;}void push_back(const T val){insert(end(), val);}void push_front(const T val){insert(begin(), val);}iterator insert(iterator pos, const T val);void pop_front(){erase(begin());}void pop_back(){erase(_head-_prev);}iterator erase(iterator pos);private:Node* _head;size_t _size;};templateclass Ttypename listT::iterator listT::insert(iterator pos, const T val){Node* newNode new Node(val);Node* cur pos._node;Node* prev cur-_prev;prev-_next newNode;newNode-_prev prev;newNode-_next cur;cur-_prev newNode;_size;return newNode;}templateclass Ttypename listT::iterator listT::erase(iterator pos){assert(pos ! _head);Node* cur pos._node;Node* next cur-_next;Node* prev cur-_prev;prev-_next next;next-_prev prev;delete cur;--_size;return next;}templateclass Containervoid print_Container(const Container con){for (auto e : con){cout e ;}cout endl;} } 3、Test.cpp #include List.hnamespace Lzc {struct AA{int _a1 1;int _a2 1;};void test_list1(){listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);listint::iterator it lt.begin();while (it ! lt.end()){*it 10;cout *it ;it;}cout endl;for (auto e : lt){cout e ;}cout endl;print_Container(lt);listAA lta;lta.push_back(AA());lta.push_back(AA());lta.push_back(AA());lta.push_back(AA());listAA::iterator ita lta.begin();while (ita ! lta.end()){//cout (*ita)._a1 : (*ita)._a2 endl;cout ita-_a1 : ita-_a2 endl;// 特殊处理本来应该是两个-才合理为了可读性省略了一个-// cout ita.operator-()-_a1 : ita.operator-()-_a2 endl;ita;}cout endl;}void test_list2(){listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);// insert后it还指向begin(),没有扩容的概念不失效listint::iterator it lt.begin();lt.insert(it, 10); *it 100;print_Container(lt);// erase后it为野指针及时更新// 删除所有的偶数it lt.begin();while (it ! lt.end()){if (*it % 2 0){it lt.erase(it);}else{it;}}print_Container(lt);}void test_list3(){listint lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);listint lt2(lt1);print_Container(lt1);print_Container(lt2);listint lt3;lt3.push_back(10);lt3.push_back(20);lt3.push_back(30);lt3.push_back(40);lt1 lt3;print_Container(lt1);print_Container(lt3);}void func(const listint lt){print_Container(lt);}void test_list4(){// 直接构造listint lt0({ 1,2,3,4,5,6 });// 隐式类型转换listint lt1 { 1,2,3,4,5,6,7,8 };const listint lt3 { 1,2,3,4,5,6,7,8 };func(lt0);func({ 1,2,3,4,5,6 });print_Container(lt1);// templateclass T class initializer_list;// { 10, 20, 30 }是一种initializer_listint类型//auto il { 10, 20, 30 };//initializer_listint il { 10, 20, 30 };//cout typeid(il).name() endl;//cout sizeof(il) endl;} }int main() {Lzc::test_list1();Lzc::test_list2();Lzc::test_list3();Lzc::test_list4();return 0; } 注意声明和定义分离时为什么定义时是listT::iterator不是iterator因为iterator在listT中typedef了就属于listT的成员变量了。
http://www.w-s-a.com/news/684614/

相关文章:

  • 网络营销案例分析与实践搜外seo
  • 手机建网站挣钱吗wordpress面包屑
  • 淘客做网站怎么备案网站开发工具的是什么
  • 提供大良网站建设郑州网站建设网站开发
  • 邢台做wap网站价格wordpress评论滑动
  • 绝味鸭脖网站建设规划书江苏建设人才网 官网
  • 网站源码授权破解centos wordpress 整站
  • 建设一个私人视频网站wordpress js
  • 手机企业网站制作流程3d建模自学
  • 网站优化方案和实施wordpress的归档
  • 建设事业单位网站多少钱集艾设计公司官网
  • 网站建设与管理方案书图片的制作方法
  • 中文建网站美发网站模板带手机版
  • 免费聊天不充值软件windows优化大师下载安装
  • 网站优化的关键词自己怎么做外贸网站空间
  • 现在建设的网站有什么劣势温州互联网公司
  • 重庆自助企业建站模板淘宝关键词top排行榜
  • 平邑网站制作买高端品牌网站
  • 深圳建网站三千网站安全代维
  • 西宁市精神文明建设网站装饰设计甲级资质
  • 做教育行业营销类型的网站徐州做网站多少钱
  • 临沂品牌网站制作企业网站建设搜集资料
  • wordpress注册验证码手机网站优化
  • 往建设厅网站上传东西做衣服的教程网站有哪些
  • 网上商城网站设计免费咨询口腔科医生回答在线
  • 南京网站c建设云世家 s浏览器
  • 如何做镜像别人网站wordpress菜单对齐修改
  • 长春网站建设net企业公示信息查询官网
  • 金鹏建设集团网站可在哪些网站做链接
  • 电子产品网站开发背景网站关键词优化方案