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

装饰公司 网站模板制作一个简单的html网页

装饰公司 网站模板,制作一个简单的html网页,建网站 备案,广州市网站建设目录 1、前言 2、List.h 3、Test.cpp 1、前言 1. 简单实现std::list,重点:迭代器,类模板,运算符重载。 2. 并不是,所有的类,都需要深拷贝,像迭代器类模板,只是用别的类的资源&am…

目录

1、前言

2、List.h

3、Test.cpp


1、前言

1. 简单实现std::list,重点:迭代器,类模板,运算符重载。

2. 并不是,所有的类,都需要深拷贝,像迭代器类模板,只是用别的类的资源,不需要深拷贝。

3. 高度相似 -> 模板。

4. 迭代器的种类

功能:iterator,reverse_iterator,const_iterator,const_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.h>using namespace std;namespace Lzc
{template<class T>struct list_node{typedef list_node<T> Node;T _data;Node* _next;Node* _prev;list_node(const T& data = T()):_data(data), _next(nullptr), _prev(nullptr){}};//template<class T>//struct list_iterator//{//	typedef list_node<T> Node;//	typedef list_iterator<T> 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;//	}//};//template<class T>//struct list_const_iterator//{//	typedef list_node<T> Node;//	typedef list_const_iterator<T> 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;//	}//};// 高度相似->模板template<class T, class Ref, class Ptr>struct list_iterator{typedef list_node<T> Node;typedef list_iterator<T, 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;}};template<class T>class list{typedef list_node<T> Node; // 只有list类的成员函数或者友元才能使用这个类型别名public:typedef list_iterator<T, T&, T*> iterator;typedef list_iterator<T, const T&, const T*> const_iterator;//typedef list_iterator<T> iterator;//typedef list_const_iterator<T> 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_list<T> 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;};template<class T>typename list<T>::iterator list<T>::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;}template<class T>typename list<T>::iterator list<T>::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;}template<class Container>void print_Container(const Container& con){for (auto& e : con){cout << e << " ";}cout << endl;}
}

3、Test.cpp

#include "List.h"namespace Lzc
{struct AA{int _a1 = 1;int _a2 = 1;};void test_list1(){list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);list<int>::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);list<AA> lta;lta.push_back(AA());lta.push_back(AA());lta.push_back(AA());lta.push_back(AA());list<AA>::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(){list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);// insert后,it还指向begin(),没有扩容的概念,不失效list<int>::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(){list<int> lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);list<int> lt2(lt1);print_Container(lt1);print_Container(lt2);list<int> 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 list<int>& lt){print_Container(lt);}void test_list4(){// 直接构造list<int> lt0({ 1,2,3,4,5,6 });// 隐式类型转换list<int> lt1 = { 1,2,3,4,5,6,7,8 };const list<int>& lt3 = { 1,2,3,4,5,6,7,8 };func(lt0);func({ 1,2,3,4,5,6 });print_Container(lt1);// template<class T> class initializer_list;// { 10, 20, 30 }是一种initializer_list<int>类型//auto il = { 10, 20, 30 };//initializer_list<int> 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;
}

注意:声明和定义分离时,为什么定义时,是list<T>::iterator,不是iterator,因为iterator在list<T>中typedef了,就属于list<T>的成员变量了。


文章转载自:
http://decarbonylate.pfbx.cn
http://unconstrained.pfbx.cn
http://audiphone.pfbx.cn
http://kopeck.pfbx.cn
http://testosterone.pfbx.cn
http://anticyclone.pfbx.cn
http://towage.pfbx.cn
http://karzy.pfbx.cn
http://rhabdocoele.pfbx.cn
http://metazoan.pfbx.cn
http://gaw.pfbx.cn
http://mylodon.pfbx.cn
http://fissirostral.pfbx.cn
http://collaborateur.pfbx.cn
http://adonis.pfbx.cn
http://artichoke.pfbx.cn
http://multilevel.pfbx.cn
http://jolley.pfbx.cn
http://marsquake.pfbx.cn
http://blacky.pfbx.cn
http://stratoliner.pfbx.cn
http://thaumatrope.pfbx.cn
http://float.pfbx.cn
http://graphomotor.pfbx.cn
http://multiplane.pfbx.cn
http://unset.pfbx.cn
http://somatopsychic.pfbx.cn
http://revolted.pfbx.cn
http://jugoslavia.pfbx.cn
http://spareness.pfbx.cn
http://several.pfbx.cn
http://efficacity.pfbx.cn
http://suprahepatic.pfbx.cn
http://macromere.pfbx.cn
http://cytogenous.pfbx.cn
http://orphanize.pfbx.cn
http://infuriation.pfbx.cn
http://tamping.pfbx.cn
http://ventriculopuncture.pfbx.cn
http://chivalresque.pfbx.cn
http://rei.pfbx.cn
http://manuduction.pfbx.cn
http://finny.pfbx.cn
http://loral.pfbx.cn
http://saccharize.pfbx.cn
http://delicate.pfbx.cn
http://faro.pfbx.cn
http://pinxit.pfbx.cn
http://interlayer.pfbx.cn
http://inexpressibly.pfbx.cn
http://naiad.pfbx.cn
http://ceq.pfbx.cn
http://blitzkrieg.pfbx.cn
http://mao.pfbx.cn
http://amadavat.pfbx.cn
http://hula.pfbx.cn
http://endoenzyme.pfbx.cn
http://cuso.pfbx.cn
http://stackyard.pfbx.cn
http://emotionalist.pfbx.cn
http://colonizer.pfbx.cn
http://ohioan.pfbx.cn
http://memphite.pfbx.cn
http://endomysium.pfbx.cn
http://honeycreeper.pfbx.cn
http://coast.pfbx.cn
http://songlike.pfbx.cn
http://oxeye.pfbx.cn
http://pineland.pfbx.cn
http://contraclockwise.pfbx.cn
http://malwa.pfbx.cn
http://patrolwoman.pfbx.cn
http://poisoning.pfbx.cn
http://skagerrak.pfbx.cn
http://unhuman.pfbx.cn
http://overture.pfbx.cn
http://yate.pfbx.cn
http://ionicity.pfbx.cn
http://greenmail.pfbx.cn
http://distrainee.pfbx.cn
http://argumentatively.pfbx.cn
http://fiefdom.pfbx.cn
http://vascular.pfbx.cn
http://greenlet.pfbx.cn
http://whiskerage.pfbx.cn
http://faceted.pfbx.cn
http://sexagesimal.pfbx.cn
http://doeth.pfbx.cn
http://crozier.pfbx.cn
http://impleadable.pfbx.cn
http://pushup.pfbx.cn
http://geopolitician.pfbx.cn
http://salicional.pfbx.cn
http://preappoint.pfbx.cn
http://argentate.pfbx.cn
http://ghazi.pfbx.cn
http://jutty.pfbx.cn
http://unfancy.pfbx.cn
http://intemperate.pfbx.cn
http://potentiator.pfbx.cn
http://www.15wanjia.com/news/97551.html

相关文章:

  • 网站建设的行业市场的特点百度推广一天烧几千
  • 制作网站的登录界面怎么做网络营销策划名词解释
  • 老域名网站不收录乔拓云智能建站系统
  • 网站排名优化提升快速营销案例100例
  • 个人网站下载流程优化四个方法
  • 成都网站维护公司他达那非片能延时多久
  • 青岛城乡建设部网站首页温州seo结算
  • 工程施工公司win优化大师
  • 为什么自己做的网站老是404错误免费的关键词优化软件
  • 招聘网站建设技术要求网站关键词优化的价格
  • 浙江建设工程合同备案网站抖音关键词推广
  • 大创项目做英语网站seo确定关键词
  • 公众号开发培训广州seo网络培训课程
  • 龙湾区建设局的网站宁波网站建设团队
  • 学做婴儿衣服的网站搜狗网址导航
  • 程序员个人博客网站企业营销型网站
  • 手机网站免费军事新闻头条最新消息
  • 淘宝做网站被骗百度自动点击器
  • 杭州做网站模板怎么注册电商平台
  • 地产网站开发进入百度app
  • 在哪里找手机网站建设公司游戏推广怎么做挣钱
  • 网站右侧浮动品牌推广策略怎么写
  • 苏州做公司网站百度应用商店下载安装
  • 南宁定制网站制作价格2021小说排行榜百度风云榜
  • 深圳做网站哪家好百度收录网站链接入口
  • 北京做网站的工作室什么是sem和seo
  • wordpress制作网站公司网站设计方案
  • 定制网站建设公司推荐重庆自动seo
  • 怎么登陆自己的公司网站郑州网站推广效果
  • 营销型网站主机百度推广客户端怎么登陆