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

怎么不花钱做公司网站企业营销策划论文

怎么不花钱做公司网站,企业营销策划论文,企业网站及公众号建设方案,美国做色情网站犯法吗1.序言 STL (Standard Template Library)是C标准库中的一个重要组件,提供了许多通用的数据结构和算法。其中,STL list是一种带头双向链表容器,可以存储任意类型的元素。 list的特点包括: 双向性:list中的元素可以根据需…

1.序言

        STL (Standard Template Library)是C++标准库中的一个重要组件,提供了许多通用的数据结构和算法。其中,STL list是一种带头双向链表容器,可以存储任意类型的元素。

list的特点包括:

  1. 双向性:list中的元素可以根据需要在前向和后向方向上进行遍历和访问。

  2. 动态大小:list的大小可以根据需要动态增长和收缩,不像数组需要预先定义大小。

  3. 高效的插入和删除:在list中插入或删除元素的操作非常高效,时间复杂度为常数时间。

  4. 不支持随机访问:由于list的实现是基于链表的,所以不支持随机访问,只能通过遍历来访问指定位置的元素。

list提供了一系列的成员函数来操作元素,包括:

  1. push_back()和push_front():分别在list的尾部和头部插入一个元素。

  2. pop_back()和pop_front():分别删除list的尾部和头部的元素。

  3. insert():在指定位置插入一个或多个元素。

  4. erase():删除指定位置的一个或多个元素。

  5. size():返回list中元素的个数。

  6. empty():判断list是否为空。

        值得注意的是,由于list是双向链表,所以在内存上的开销相对较大,而且无法通过下标直接访问元素。因此,在选择容器时需要根据实际需求进行权衡。

2.list整体结构

template<class T>
struct list_node
{list_node<T>* _next;list_node<T>* _prev;T _Data;list_node(const T& x = T()):_next(nullptr), _prev(nullptr), _Data(x){}
};template<class T,class Ref,class Ptr>
struct __list_iterator
{typedef list_node<T> node;typedef __list_iterator<T, Ref, Ptr> iterator;     node* _node; //···········
};template<class T>
class list
{typedef list_node<T> node;
public:typedef __list_iterator<T, T&, T*> iterator;typedef __list_iterator<T, const T&, const T*> const_iterator;//······
private:node* _head;};

3.list迭代器

3.1 operator*()

        operator*() 返回的是list某节点存储的数据,并且返回时要能修改数据,所以返回类型是T&(Ref:是个模板参数,兼顾 T& 和 const T &,用哪个传那个 )。

Ref operator*()
{return _node->_Data;
}

3.2 operator->()

        operator->() 用于取list存储的数据对象里面的属性,也是模拟指针的行为,返回数据对象的地址。

Ptr operator->()
{return &_node->_Data;
}

        需要注意的是如果我们使用这个 -> 的运算符重载,假设一迭代器对象 it :it.operator->()->(某属性) 等价于 it->->(某属性) ,这里实际上有俩个 -> ,为了增加代码的可读性,这里进行了特殊处理,优化成了一个 -> :it->(某属性) 。

3.3 operator++() 和 operator++(int)、operator--() 和 operator--(int)

        operator++()(operator--())是前置++(--),返回++(--)后的值,operator++(int)(operator--())是后置++(--),返回++前的值(--)。

iterator& operator++()
{_node = _node->_next;return *this;
}
iterator operator++(int)
{ iterator tmp(*this);_node = _node->_next;return tmp;
}
iterator& operator--()
{_node = _node->_prev;return *this;
}
iterator operator--(int)
{iterator tmp(*this);_node = _node->_prev;return tmp;
}

 3.4 operator==() 和 operator!=()

bool operator==(const iterator& it)
{return _node == it._node;
}
bool operator!=(const iterator& it)
{return _node != it._node;
}

3.5 迭代器完整代码

template<class T>
struct list_node
{
list_node<T>* _next;
list_node<T>* _prev;
T _Data;
list_node(const T& x = T()):_next(nullptr), _prev(nullptr), _Data(x)
{}
};template<class T,class Ref,class Ptr>
struct __list_iterator
{
typedef list_node<T> node;
typedef __list_iterator<T, Ref, Ptr> iterator;
__list_iterator(node* n):_node(n)
{}
Ref operator*()
{return _node->_Data;
}
Ptr operator->()
{return &_node->_Data;
}iterator& operator++()
{_node = _node->_next;return *this;
}
iterator operator++(int)
{ iterator tmp(*this);_node = _node->_next;return tmp;
}
iterator& operator--()
{_node = _node->_prev;return *this;
}
iterator operator--(int)
{iterator tmp(*this);_node = _node->_prev;return tmp;
}bool operator==(const iterator& it)
{return _node == it._node;
}
bool operator!=(const iterator& it)
{return _node != it._node;
}
node* _node; 
};

4.list接口

4.1构造函数

list()
{_head = new node;_head->_next = _head->_prev = _head;
}~list()
{while (end() != _head){erase(end());}delete _head;_head = nullptr;
}
template<class Iterator>
list(Iterator first, Iterator last)
{_head = new node;_head->_next = _head->_prev = _head;while (first != last){push_back(*first);first++;}
}void swap(list<T>& tmp)
{std::swap(_head, tmp._head);
}list(const list<T>& l)
{_head = new node;_head->_next = _head->_prev = _head;list<T> tmp(l.begin(), l.end());swap(tmp);
}

4.2 push_back() push_front() pop_back() pop_front()

void push_back(const T& x)
{node* tail = _head->_prev;node* newnode = new node(x);newnode->_prev = tail;newnode->_next = tail->_next;tail->_next = newnode;_head->_prev = newnode;
}void push_front(const T& x)
{node* head = _head->_next;node* newnode = new node(x);newnode->_prev = _head;newnode->_next = head;_head->_next = newnode;head->_prev = newnode;}
void pop_back()
{node* tail = _head->_prev;_head->_prev = tail->_prev;tail->_prev->_next = _head;delete tail;
}
void pop_front()
{node* head = _head->_next;_head->_next = head->_next;head->_next->_prev = _head;delete head;
}

 4.3迭代器

iterator begin()
{return iterator(_head->_next);
}
iterator end()
{return iterator(_head);
}const_iterator begin() const
{return iterator(_head->_next);
}
const_iterator end() const
{return iterator(_head);
}

 4.4 insert() 和 erase()

        注意erase的迭代器失效,需要更新pos

void insert(iterator pos, const T& x)
{node* cur = pos._node;node* newnode = new node(x);newnode->_next = cur;newnode->_prev = cur->_prev;cur->_prev->_next = newnode;cur->_prev = newnode;
}iterator erase(iterator pos)
{assert(pos != end());node* prev = pos._node->_prev;node* next = pos._node->_next;prev->_next = next;next->_prev = prev;delete pos._node;return iterator(next);
}

5. list完整代码

#pragma once
#include<iostream>
#include<assert.h>
using namespace std; 
namespace zy
{template<class T>struct list_node{list_node<T>* _next;list_node<T>* _prev;T _Data;list_node(const T& x = T()):_next(nullptr), _prev(nullptr), _Data(x){}};template<class T,class Ref,class Ptr>struct __list_iterator{typedef list_node<T> node;typedef __list_iterator<T, Ref, Ptr> iterator;__list_iterator(node* n):_node(n){}Ref operator*(){return _node->_Data;}Ptr operator->(){return &_node->_Data;}iterator& operator++(){_node = _node->_next;return *this;}iterator operator++(int){ iterator tmp(*this);_node = _node->_next;return tmp;}iterator& operator--(){_node = _node->_prev;return *this;}iterator operator--(int){iterator tmp(*this);_node = _node->_prev;return tmp;}bool operator==(const iterator& it){return _node == it._node;}bool operator!=(const iterator& it){return _node != it._node;}node* _node; };template<class T>class list{typedef list_node<T> node;public:typedef __list_iterator<T, T&, T*> iterator;typedef __list_iterator<T, const T&, const T*> const_iterator;list(){_head = new node;_head->_next = _head->_prev = _head;}~list(){while (end() != _head){erase(end());}delete _head;_head = nullptr;}template<class Iterator>list(Iterator first, Iterator last){_head = new node;_head->_next = _head->_prev = _head;while (first != last){push_back(*first);first++;}}void swap(list<T>& tmp){std::swap(_head, tmp._head);}list(const list<T>& l){_head = new node;_head->_next = _head->_prev = _head;list<T> tmp(l.begin(), l.end());swap(tmp);}list<T>& operator=(list<T> lt){swap(lt);return *this;}void push_back(const T& x){node* tail = _head->_prev;node* newnode = new node(x);newnode->_prev = tail;newnode->_next = tail->_next;tail->_next = newnode;_head->_prev = newnode;}void push_front(const T& x){node* head = _head->_next;node* newnode = new node(x);newnode->_prev = _head;newnode->_next = head;_head->_next = newnode;head->_prev = newnode;}void pop_back(){node* tail = _head->_prev;_head->_prev = tail->_prev;tail->_prev->_next = _head;delete tail;}void pop_front(){node* head = _head->_next;_head->_next = head->_next;head->_next->_prev = _head;delete head;}iterator begin(){return iterator(_head->_next);}iterator end(){return iterator(_head);}const_iterator begin() const{return iterator(_head->_next);}const_iterator end() const{return iterator(_head);}void insert(iterator pos, const T& x){node* cur = pos._node;node* newnode = new node(x);newnode->_next = cur;newnode->_prev = cur->_prev;cur->_prev->_next = newnode;cur->_prev = newnode;}iterator erase(iterator pos){assert(pos != end());node* prev = pos._node->_prev;node* next = pos._node->_next;prev->_next = next;next->_prev = prev;delete pos._node;return iterator(next);}private:node* _head;};
}


文章转载自:
http://dinncocesspool.stkw.cn
http://dinncoconjunct.stkw.cn
http://dinncocbpi.stkw.cn
http://dinncosignans.stkw.cn
http://dinncosamp.stkw.cn
http://dinncojointed.stkw.cn
http://dinncodrinamyl.stkw.cn
http://dinncoorthotropism.stkw.cn
http://dinncoempaquetage.stkw.cn
http://dinncoterrane.stkw.cn
http://dinncosplice.stkw.cn
http://dinncowatchmaking.stkw.cn
http://dinncoparapodium.stkw.cn
http://dinncobennery.stkw.cn
http://dinncoigorrote.stkw.cn
http://dinncokeelivine.stkw.cn
http://dinncodegradative.stkw.cn
http://dinncoevangeline.stkw.cn
http://dinncoundiluted.stkw.cn
http://dinncocresting.stkw.cn
http://dinncodisseminator.stkw.cn
http://dinncoseduction.stkw.cn
http://dinncofragment.stkw.cn
http://dinncoceltic.stkw.cn
http://dinncosubornation.stkw.cn
http://dinnconasaiism.stkw.cn
http://dinncominigunner.stkw.cn
http://dinnconachus.stkw.cn
http://dinncobillon.stkw.cn
http://dinncotroubadour.stkw.cn
http://dinncosejant.stkw.cn
http://dinncoclassicise.stkw.cn
http://dinncoepisternum.stkw.cn
http://dinncocoranglais.stkw.cn
http://dinncorosario.stkw.cn
http://dinncosaintlike.stkw.cn
http://dinncopander.stkw.cn
http://dinncorestraint.stkw.cn
http://dinncooutwith.stkw.cn
http://dinncosaying.stkw.cn
http://dinncoelocnte.stkw.cn
http://dinncokhaki.stkw.cn
http://dinncosystematizer.stkw.cn
http://dinncorauvite.stkw.cn
http://dinnconegrophile.stkw.cn
http://dinnconyt.stkw.cn
http://dinncopoltroonery.stkw.cn
http://dinncobokhara.stkw.cn
http://dinncotor.stkw.cn
http://dinncochlordiazepoxide.stkw.cn
http://dinncopandy.stkw.cn
http://dinncoministerialist.stkw.cn
http://dinncodehumanize.stkw.cn
http://dinncoprome.stkw.cn
http://dinncodirecttissima.stkw.cn
http://dinncobloodbath.stkw.cn
http://dinncoemulous.stkw.cn
http://dinncoimpotence.stkw.cn
http://dinncowoolgather.stkw.cn
http://dinncoineffaceable.stkw.cn
http://dinncointrados.stkw.cn
http://dinncolatakia.stkw.cn
http://dinncoexpiry.stkw.cn
http://dinncoaccrue.stkw.cn
http://dinncothallious.stkw.cn
http://dinncosynodic.stkw.cn
http://dinncogloriously.stkw.cn
http://dinncocoleopteron.stkw.cn
http://dinncocrubeen.stkw.cn
http://dinncocryptogamous.stkw.cn
http://dinncoinconsiderable.stkw.cn
http://dinncowoodcraft.stkw.cn
http://dinncojiggers.stkw.cn
http://dinnconatty.stkw.cn
http://dinncoapolar.stkw.cn
http://dinncosestet.stkw.cn
http://dinncoalkali.stkw.cn
http://dinncopriestly.stkw.cn
http://dinncometacompilation.stkw.cn
http://dinncoorthros.stkw.cn
http://dinncothunderer.stkw.cn
http://dinncopolymerize.stkw.cn
http://dinncounshared.stkw.cn
http://dinncocowk.stkw.cn
http://dinncounderhanded.stkw.cn
http://dinncoslickenside.stkw.cn
http://dinncolonghair.stkw.cn
http://dinncopuggry.stkw.cn
http://dinncowaybill.stkw.cn
http://dinncopygmalion.stkw.cn
http://dinncoextorsive.stkw.cn
http://dinncobongo.stkw.cn
http://dinncocloister.stkw.cn
http://dinncocapcom.stkw.cn
http://dinncoultimate.stkw.cn
http://dinncoplumbism.stkw.cn
http://dinncounblushing.stkw.cn
http://dinncobandy.stkw.cn
http://dinncojonnop.stkw.cn
http://dinncospendthrift.stkw.cn
http://www.dinnco.com/news/141576.html

相关文章:

  • 建立网站 优帮云合肥百度网站排名优化
  • 建网站做站在网络营销策划书的范文
  • wap购物网站模板下载网站seo 优化
  • 平面设计做网站的步骤全网自媒体平台大全
  • 青海省城乡建设厅网站首页网站设计方案
  • 深圳网站开发团队合肥做网站推广
  • 淘宝网上做美国签证的网站可靠吗著名的网络营销案例
  • 日本做黄视频网站优化网站推广教程排名
  • 做网站的一年能挣多少钱百度入口的链接
  • 网站文件保护怎么做足球直播在线直播观看免费cctv5
  • wordpress网站安装插件网络推广发展
  • 网站在线留言搜索引擎优化人员优化
  • 怎样进行网站开发简单的html网页制作
  • 做网站哪家最好aso排名
  • wap网站 劣势推广计划
  • 做解析会员电影的网站进行网络推广
  • 网站动画用什么做交换链接是什么意思
  • 网站建设服务定制专业做网站的公司
  • 汉阳网站建设谷歌seo优化排名
  • 人才网站的会计账如何做网络营销的优势包括
  • 邯郸网站建设最新报价百度营销
  • 佘山做网站镇江优化推广
  • 手机如何建设网站首页百度一下首页百度一下
  • 梅林多丽工业区做网站国外产品推广平台
  • dw里响应式网站怎么做新闻 最新消息
  • 小学免费资源网站模板网站免费制作平台
  • 有没有咨询求助做任务的网站seo实战密码第四版pdf
  • 深圳国贸网站建设百度竞价广告代理
  • 我的网站dede搜索引擎推广方式
  • 菏泽市监管局进入公众号湖南靠谱seo优化报价