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

2015做导航网站好百度提交入口网址是什么

2015做导航网站好,百度提交入口网址是什么,阳江企业网站建设,最常访问的网址目录 一#xff0c; vector的手搓 1.构造函数 2. 拷贝构造的实现 3.析构函数 4.begin() end() 的实现 5.reserve的实现 6.size和capacity的实现 7.push_back的实现 8.pop_back的实现 9.empty的实现 10.insert的实现 11.erase的实现 12.resize的实现 13.clear的实… 目录 一 vector的手搓 1.构造函数 2. 拷贝构造的实现 3.析构函数 4.begin() end() 的实现 5.reserve的实现 6.size和capacity的实现 7.push_back的实现 8.pop_back的实现 9.empty的实现 10.insert的实现 11.erase的实现 12.resize的实现 13.clear的实现 14.swap的实现 14. []重载 15.重载 16. Vector类中的private 二源码 一 vector的手搓 Vector类的定义 template class T class Vector { public:typedef T* iterator;typedef const T* const_iterator;Vector(){}private:iterator _start nullptr;//最开始iterator _finish nullptr;//内容结尾(并不是容量的结尾)iterator _end_of_storage nullptr;//容量结尾 }; 1.构造函数 templateclass InputIterator Vector(InputIterator first, InputIterator last) {while (first ! last){Push_back(*first);first;} } (1).在模板类中再定义模板类使得能够插入不同容器的值。 2. 拷贝构造的实现 Vector(const VectorT v)//拷贝构造 {for (auto e : v){Push_back(e);} } (1).直接使用范围for遍历一次即可。 3.析构函数 ~Vector() {if (_start){delete[] _start;_start _finish _end_of_storage nullptr;} } (1).如果_start不空的话就使用delete[] 释放空间。并且置空。 4.begin() end() 的实现 iterator begin() {return _start; }iterator end() {return _finish; }const_iterator begin() const {return _start; }const_iterator end() const {return _finish; } (1).分为const修饰和不加const修饰构成了函数重载begin()返回起始_start即可end()返回_finsih即可。 5.reserve的实现 void Reserve(size_t n) {if (n Capacity()){size_t oldsize Size();T* tmp new T[n];for (int i 0; i oldsize; i) {tmp[i] _start[i];}//memcpy(tmp, _start, Size() * sizeof(T));delete[] _start;_start tmp;_finish tmp oldsize;_end_of_storage tmp n;} } (1).扩容函数如果要求的空间大于当前的容量就要扩容首先存储当先数据个数Size()到oldsize然后再开辟一个新空间然后把_start中的全部数据拷贝到tmp中然后再把_start释放空间再将tmp赋值给_start将_finish指向tmpoldsize的位置。_end_of_storage指向tmpn的位置。 6.size和capacity的实现 size_t Size() {return _finish - _start; }size_t Capacity() {return _end_of_storage - _start; } (1).Size为vector中数据个数所以直接返回_finish(最后一个数据的地址)减start(第一个数据的地址)即可。 (2).Capacity为vector中容量大小所以直接返回_end_of_storage(容量的最后一个地址)减start(第一个数据的地址)即可。 7.push_back的实现 void Push_back(const T x) {if (_finish _end_of_storage) // 扩容{Reserve(Capacity() 0 ? 4 : Capacity() * 2);}*_finish x;_finish; } (1).push_back前要检查是否需要扩容这里选择二倍扩容。 (2).直接将*_finish(元素的最后一个位置的下一个位置)赋值为x。再将_finish自加使其移动到空位置方便下次赋值。 8.pop_back的实现 void Pop_back() {assert(!empty());--_finish; } (1).首先判断是否为空如果为空就断言。 (2).直接将_finish自减即可。 9.empty的实现 bool empty() {return _start _finish; } (1).判断_start 和 _finish是否相等即可如果相等就为空否则为不空。 10.insert的实现 iterator insert(iterator pos, const T x) {assert(pos _start);assert(pos _finish);if (_finish _end_of_storage) // 扩容{size_t len pos - _start; // 解决迭代器失效Reserve(Capacity() 0 ? 4 : Capacity() * 2);pos _start len; // 解决迭代器失效}iterator end _finish - 1;while (end pos) // 迭代器失效问题已经扩容了但是pos还是指向原来的旧空间 野指针{*(end 1) *end;end--;}*pos x;_finish;return pos; } (1).大致思路为把要插入位置(pos)之后的全部向后移动一位然后再将pos位置赋值为要插入的元素。 (2).要想插入首先判断是否需要扩容。 (3).定义一个迭代器end存储vector中最后一个元素的位置然后循环判断(end pos)每次成立时就把end1处赋值为end的元素然后将end自减。退出循环后直接将*pos赋值为x并把_finish自加即可。 11.erase的实现 void erase(iterator pos) {assert(pos _start);assert(pos _finish);iterator it pos 1;while (it ! end()){*(it - 1) *it;it;}--_finish; } (1).大致思路为将pos位置之后的全部元素都向前移动一个位置最后将_finish自减即可。 12.resize的实现 void resize(size_t n, T val T()) {// nsize// sizencapacity// ncapaciityif (n Size()){_finish _start n;}else{Reserve(n);while (_finish _start n){*_finish val;_finish;}} } (1).resize为对字符串大小做改变当nsize时就会对当前字符串缩减其余情况为reserve。 13.clear的实现 void clear() {_finish _start; } (1).直接将_finish_start即可。 14.swap的实现 void swap(VectorT v) {std::swap(_start, v._start);std::swap(_finish, v._finish);std::swap(_end_of_storage, v._end_of_storage); } (1).直接交换即可。 14. []重载 T operator[](size_t i) {return _start[i]; }const T operator[](size_t i) const {return _start[i]; } (1).由于_start为顺序表所以直接返回顺序表的值即可。 15.重载 //方法一VectorT operator(const VectorT v) {if (this ! v){clear();Reverse(v.Size());for (auto e : v){Push_back(e);}}return *this; }//方法二VectorT operator( vectorT v){swap(v);return *this;} (1).有两种方法第一种方法为先清空_start然后再对_start重新扩容扩容置与v相等然后遍历v把v中的元素按个插入_start。 (2).方法二要进行传值传参不能用传址传参然后直接交换即可这样_start就成了v了由于v为传值传参并不受影响。 16. Vector类中的private private:iterator _start nullptr;//缺省iterator _finish nullptr;//缺省iterator _end_of_storage nullptr;//缺省 二源码 #pragma once #include iostream #include vector #include assert.h #includealgorithmnamespace hhc {template class Tclass Vector{public:typedef T* iterator;typedef const T* const_iterator;Vector(){}Vector(const VectorT v)//拷贝构造{for (auto e : v){Push_back(e);}}~Vector(){if (_start){delete[] _start;_start _finish _end_of_storage nullptr;}}iterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin() const{return _start;}const_iterator end() const{return _finish;}void Reserve(size_t n){if (n Capacity()){size_t oldsize Size();T* tmp new T[n];for (int i 0; i oldsize; i) {tmp[i] _start[i];}//memcpy(tmp, _start, Size() * sizeof(T));delete[] _start;_start tmp;_finish tmp oldsize;_end_of_storage tmp n;}}size_t Size(){return _finish - _start;}size_t Capacity(){return _end_of_storage - _start;}void Push_back(const T x){if (_finish _end_of_storage) // 扩容{Reserve(Capacity() 0 ? 4 : Capacity() * 2);}*_finish x;_finish;}bool empty(){return _start _finish;}void Pop_back(){assert(!empty());--_finish;}void insert(iterator pos, const T x){assert(pos _start);assert(pos _finish);if (_finish _end_of_storage) // 扩容{size_t len pos - _start; // 解决迭代器失效Reserve(Capacity() 0 ? 4 : Capacity() * 2);pos _start len; // 解决迭代器失效}iterator end _finish - 1;while (end pos) // 迭代器失效问题已经扩容了但是pos还是指向原来的旧空间 野指针{*(end 1) *end;end--;}*pos x;_finish;}void erase(iterator pos){assert(pos _start);assert(pos _finish);iterator it pos 1;while (it ! end()){*(it - 1) *it;it;}--_finish;}void resize(size_t n, T val T()){// nsize// sizencapacity// ncapaciityif (n Size()){_finish _start n;}else{Reserve(n);while (_finish _start n){*_finish val;_finish;}}}void clear(){_finish _start;}void swap(VectorT v){std::swap(_start, v._start);std::swap(_finish, v._finish);std::swap(_end_of_storage, v._end_of_storage);}templateclass InputIteratorVector(InputIterator first, InputIterator last){while (first ! last){Push_back(*first);first;}}T operator[](size_t i){return _start[i];}const T operator[](size_t i) const{return _start[i];}//方法一VectorT operator(const VectorT v){if (this ! v){clear();Reverse(v.Size());for (auto e : v){Push_back(e);}}return *this;}//方法二VectorT operator( vectorT v){swap(v);return *this;}private:iterator _start nullptr;iterator _finish nullptr;iterator _end_of_storage nullptr;};template class Containervoid print_Container(const Container v){// 没用实例化的类模板里面取东西编译器不能区分const_iterator是类型还是静态成员变量// 编译器规定不能去没用实例化的模板里面取东西typename Container::const_iterator it v.begin();auto itt v.begin(); // 这样也行while (it ! v.end()){std::cout *it ;*it;}std::cout std::endl;for (auto num : v){std::cout num ;}}} 本篇完
http://www.hkea.cn/news/14419859/

相关文章:

  • 网站建站 优化辽宁建设工程招标网
  • 淄博网站建设 华夏国际四种基本营销模式
  • 网页设计制作一个餐饮网站做企业网站的字体大小要求
  • 网站建设 案例网站页面效果图怎么做
  • 锦江区建设和交通局网站绵阳城乡住房建设厅网站
  • 个人建站模板网站图片特效源码
  • 基于wordpress的英文小游戏站外贸网站开发
  • 怎样用ps做网站首页图片如何搭建一个论坛网站
  • 高端网络建站jpress 和wordpress
  • 网站字号网络服务器租赁费一般多少钱
  • 建设银行网站注册用户名不通过“网站制作”
  • 新浪网站是什么程序做的网站服务器租用一般费用
  • 怎样做才能让网站帮忙送东西wordpress 系统环境
  • 丹东网站建设公司wordpress文章伪静态
  • 长沙房地产信息网官网seo如何优化排名
  • 499可以做网站外贸网站设计公司
  • 一个网站可以做多少个小程序centos 安装 wordpress
  • 电子商务网站的开发原则包括那些网站能够做推广
  • 潍坊正规网站建设公司南昌市房产网
  • 什么是网站二级目录提高网站关键词排名
  • 山东潍坊网站制作公司安的网络网站建设
  • 广州11个区排名外贸网站建设网站优化
  • 海淀网站建设联系方式制作一个网页游戏需要多少钱
  • 进网站后台显示空白如何在易语言上做网站
  • 重庆做木门网站公司简介开源网站后台管理系统
  • 设计品牌网站公司制作宣传片视频
  • 网站大全免费下载国家开发银行助学贷款网站
  • 网站开发制作价格wordpress引用js代码
  • 网站优化排名方案想做个网站都需要什么
  • 做系统软件的网站win2003搭建wordpress