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

怎么利用QQ空间给网站做排名免费wordpress主题破解版

怎么利用QQ空间给网站做排名,免费wordpress主题破解版,做p2p网站案例,北京网站建设需要花多少钱1、 list介绍 1.1、 list介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器#xff0c;并且该容器可以前后双向迭代。 1. list的底层是双向链表结构#xff0c;双向链表中每个元素存储在互不相关的独立节点中#xff0c;在节点中通过指针指向 其前一…1、 list介绍 1.1、 list介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器并且该容器可以前后双向迭代。      1. list的底层是双向链表结构双向链表中每个元素存储在互不相关的独立节点中在节点中通过指针指向 其前一个元素和后一个元素。      2. list与forward_list非常相似最主要的不同在于forward_list是单链表只能朝前迭代已让其更简单高 效。     3. 与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率 更好。     4. 与其他序列式容器相比list和forward_list最大的缺陷是不支持任意位置的随机访问比如要访问list 的第6个元素必须从已知的位置(比如头部或者尾部)迭代到该位置在这段位置上迭代需要线性的时间 开销list还需要一些额外的空间以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这 可能是一个重要的因素) 1.2 、list的使用 list中的接口比较多此处类似只需要掌握如何正确的使用然后再去深入研究背后的原理已达到可扩展 的能力。以下为list中一些常见的重要接口。 1.3、list的构造 构造函数 (constructor)接口说明list (size_type n, const value_type val value_type())构造的list中包含n个值为val的元素list()构造空的listlist (const list x)拷贝构造函数list (InputIterator first, InputIterator last)用[first, last)区间中的元素构造list 1.4 list iterator的使用 函数声明接口说明begin end返回第一个元素的迭代器返回最后一个元素下一个位置的迭代器rbegin rend返回第一个元素的reverse_iterator,即end位置返回最后一个元素下一个位置的 reverse_iterator,即begin位置 【注意】 1. begin与end为正向迭代器对迭代器执行操作迭代器向后移动 2. rbegin(end)与rend(begin)为反向迭代器对迭代器执行操作迭代器向前移动 1.5 list element access 1.6 list modifiers 函数声明接口说明 push_front 在list首元素前插入值为val的元素pop_front 删除list中第一个元素push_back在list尾部插入值为val的元素pop_back 删除list中最后一个元素insert 在list position 位置中插入值为val的元素erase 删除list position位置的元素swap 交换两个list中的元素clear清空list中的有效元素 1.7 list的迭代器失效         迭代器失效即迭代器所指向的节点的无效即该节 点被删除了。因为list的底层结构为带头结点的双向循环链表因此在list中进行插入时是不会导致list的迭代 器失效的只有在删除时才会失效并且失效的只是指向被删除节点的迭代器其他迭代器不会受到影响。 2、list的模拟实现 2.1 list的反向迭代器         通过前面例子知道反向迭代器的就是正向迭代器的--反向迭代器的--就是正向迭代器的因此反向迭 代器的实现可以借助正向迭代器即反向迭代器内部可以包含一个正向迭代器对正向迭代器的接口进行 包装即可。 templateclass Iterator class ReverseListIterator { public:typedef typename Iterator::Ref Ref;typedef typename Iterator::Ptr Ptr;typedef ReverseListIteratorIterator Self;public:// 构造ReverseListIterator(Iterator it): _it(it) {}// 具有指针类似行为Ref operator*(){Iterator temp(_it);--temp;return *temp;}Ptr operator-(){return (operator*());}// 迭代器支持移动Self operator(){--_it;return *this;}Self operator(int){Self temp(*this);--_it;return temp;}Self operator--(){_it;return *this;}Self operator--(int){Self temp(*this);_it;return temp;}// 迭代器支持比较bool operator!(const Self l) const{return _it ! l._it;}bool operator(const Self l) const{return _it ! l._it;}Iterator _it; }; 2.2、list的模拟实现 #pragma once #includeiostream #includeassert.h using namespace std; namespace kzy {templateclass Tstruct list_node {list_nodeT* _prev;list_nodeT* _next;T _data;list_node(const T val T()):_prev(nullptr),_next(nullptr),_data(val){}};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*() {return _node-_data;}Ptr operator-(){//return (operator*());return _node-_data;}self operator() {_node_node-_next;return *this;}self operator(int){self* 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;}bool operator!(const self it){return _node ! it._node;}bool operator(const self it){return _node it._node;}};templateclass Tclass list {typedef list_nodeT Node;public:typedef _list_iteratorT, T, T* iterator;typedef _list_iteratorT, const T, const T* const_iterator;const_iterator begin() const{return const_iterator(_head-_next);}const_iterator end() const{return const_iterator(_head);}iterator begin(){return iterator(_head-_next);}iterator end() {return iterator(_head);}list() {_head new Node();_head-_next _head;_head-_prev _head;}void empty_init() {_head new Node();_head-_next _head;_head-_prev _head;}template class InputIteratorlist(InputIterator first, InputIterator last){empty_init();while (first ! last){push_back(*first);first;}}void swap(listT lt){std::swap(_head, lt._head);}list(const listT it){empty_init();listT tmp list(it.begin(), it.end());swap(tmp);}listT operator(listT lt){swap(lt);return *this;}~list(){clear();delete _head;_head nullptr;}void clear(){iterator it begin();while (it ! end()) {iterase(it);}}iterator erase(iterator pos) {assert(pos ! end());Node* cur pos._node;Node* prev cur-_prev;Node* next cur-_next;prev-_next next;next-_prev prev;delete cur;return iterator(next);}void push_back(const T x) {insert(end(),x);}void push_front(const T x){insert(begin(), x);}void pop_back() {erase(--end());}void pop_front() {erase(begin());}iterator insert(iterator pos, const T x){Node* newnode new Node(x);Node* cur pos._node;Node* prev cur-_prev;prev-_next newnode;newnode-_prev prev;newnode-_next cur;cur-_prev newnode;return iterator(newnode);}private:Node* _head;};void print_list(const listint lt){listint::const_iterator it lt.begin();while (it ! lt.end()){//*it 10; // 不允许修改cout *it ;it;}cout endl;}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 20;cout *it ;it;}cout endl;print_list(lt);}struct AA{AA(int a1 0, int a2 0):_a1(a1), _a2(a2){}int _a1;int _a2;};void test_list2(){listAA lt;lt.push_back(AA(1, 1));lt.push_back(AA(2, 2));lt.push_back(AA(3, 3));lt.push_back(AA(4, 4));// 迭代器模拟的是指针行为// int* it *it// AA* it *it it-listAA::iterator it lt.begin();while (it ! lt.end()){//cout (*it)._a1 - (*it)._a2 ;cout it-_a1 - it-_a2 ;it;}cout endl;}void test_list3(){listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_front(1);lt.push_front(2);lt.push_front(3);lt.push_front(4);for (auto e : lt){cout e ;}cout endl;lt.pop_front();lt.pop_front();lt.pop_back();lt.pop_back();for (auto e : lt){cout e ;}cout endl;}void test_list4(){listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);// 要求在偶数的前面插入这个偶数*10auto it1 lt.begin();while (it1 ! lt.end()){if (*it1 % 2 0){lt.insert(it1, *it1 * 10);}it1;}for (auto e : lt){cout e ;}cout endl;}void test_list5(){listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);// 删除所有的偶数/*auto it1 lt.begin();while (it1 ! lt.end()){if (*it1 % 2 0){lt.erase(it1);}it1;}*/auto it1 lt.begin();while (it1 ! lt.end()){if (*it1 % 2 0){it1 lt.erase(it1);}else{it1;}}for (auto e : lt){cout e ;}cout endl;lt.clear();for (auto e : lt){cout e ;}cout endl;lt.push_back(10);lt.push_back(20);lt.push_back(30);for (auto e : lt){cout e ;}cout endl;}void test_list6(){listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);listint lt1(lt);for (auto e : lt1){cout e ;}cout endl;for (auto e : lt){cout e ;}cout endl;listint lt2;lt2.push_back(10);lt2.push_back(20);lt1 lt2;for (auto e : lt2){cout e ;}cout endl;for (auto e : lt1){cout e ;}cout endl;} }3、list和vector对比 vector list 底层结构 动态顺序表一段连续空间 带头结点的双向循环链表 随机访问 支持随机访问访问某个元素效率O(1) 不支持随机访问访问某个元素效率O(N) 插入和删除 任意位置插入和删除效率低需要搬移元素时间复杂度为O(N)插入时有可能需要增容增容开辟新空间拷贝元素释放旧空间导致效率更低 任意位置插入和删除效率高不需要搬移元素时间复杂度为O(1) 空间利用率 底层为连续空间不容易造成内存碎片空间利用率高缓存利用率高 底层节点动态开辟小节点容易造成内存碎片空间利用率低缓存利用率低 迭代器 原生态指针 对原生态指针(节点指针)进行封装 迭代器失效 在插入元素时要给所有的迭代器重新赋值因为插入元素有可能会导致重新扩容致使原来迭代器失效删除时当前迭代器需要重新赋值否则会失效 插入元素不会导致迭代器失效删除元素时只会导致当前迭代器失效其他迭代器不受影响 使用场景 需要高效存储支持随机访问不关心插入删除效率 大量插入和删除操作不关心随机访
http://www.dnsts.com.cn/news/99186.html

相关文章:

  • 适合vue做的网站类型如何能查到百度搜索排名
  • 做任务领佣金的网站源码佛山做企业网站公司
  • 南昌网站建设和推广微信企业邮箱
  • 淘宝做网站seo推广主管
  • 网站开发有很多种吗网站域名不要了怎么做
  • 网站设计方案谁写南宁网站建设怎么样
  • 在哪里可以接网站开发的外包深圳企业品牌网站
  • 电商网站开发流程图wordpress文章上头条
  • 网站费用标准苏州做网站公司乛 苏州聚尚网络
  • 定制网站开发方案pptpc建站 手机网站
  • 开封网站制作小广告模板
  • 畜牧企业网站模板jsp网站开发外文翻译
  • 网站策划书总结如何获取新注册公司电话
  • 湛江大型网站模板建设最好的营销型网站案例
  • 教育培训网络平台谷歌seo关键词排名优化
  • 中装建设公司aso优化怎么做
  • 全景效果图网站wordpress流水布局主题
  • 网站建设专员一定要会网站建设吗网站隐私声明模板
  • 如何免费做网站网页做网站东莞
  • 网站设计个人网站设计团队分工
  • 个人域名邮箱怎么弄seo搜索引擎优化平台
  • 手机网站模板 商城与网站签约
  • 网站开发 站长统计做网站生成二维码
  • 免费做网站网站天猫网站设计教程
  • 做网站设计好的公司php网站开发图文教程
  • vue做网站wordpress做跟随导航导航
  • 网站品牌推广公司爱南宁app
  • 做网站需要什么备案做网站的是什么工种
  • 摄影网站采用照片做宣传_版权费是多少?做旅游网站的研究意义
  • 阿里巴巴做网站分录石家庄造价信息网