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

网站建设对企业的意义网页打不开怎么处理

网站建设对企业的意义,网页打不开怎么处理,六安手机网站建设,什么是软文营销目录 一#xff0c;框架设计 二#xff0c;构造函数 三#xff0c;析构函数 四#xff0c;赋值运算符 五#xff0c;容器接口的实现 1#xff0c;迭代器实现 2#xff0c;“ [] ”运算符的实现 3#xff0c;swap交换和resize重设大小 4#xff0c;insert插入…目录 一框架设计 二构造函数 三析构函数 四赋值运算符 五容器接口的实现 1迭代器实现 2“ [] ”运算符的实现 3swap交换和resize重设大小 4insert插入和erase删除 介绍 本文我们重点实现vector容器的用法这里要注意的是vector容器可以接纳任意类型所以在实现的时候需使用模板来控制。模拟实现vector重点还要放在构造、析构和赋值运算符重载。 一框架设计 vector容器设置中由于需要接纳各种类型因此在框架设计中需要使用模板。除此之外要想访问未知类型数据需要使用迭代器来访问。这里我们设置三个迭代器分别指向数据块开始位置、有效数据的末尾、存储容量的末尾。 templateclass T class vector { public:     typedef T* iterator;           //数据迭代器    typedef const T* const_iterator;   //常量迭代器private:     iterator _start;                  // 指向数据块的开始    iterator _finish;                // 指向有效数据的尾    iterator _endOfStorage;  // 指向存储容量的尾}; 二构造函数 在使用构造函数之前我们首先要考虑基础的算法设置以方便使用reverse扩容、capacity容器容量、size容器大小、push_back增添元素、pop_back删除元素。 //获取容器大小 size_t size() const {     return _finish - _start; } //获取容器容量 size_t capacity() const {     return _endOfStorage - _start; } //容器扩容 void reserve(size_t n) {     if (n capacity())    //只能增容不能缩小     {         int newsize size();         T* tem new T[n];         memcpy(tem, _start, sizeof(T) * newsize);         if (_start)         {             delete[] _start;         }         _start tem;         _finish _start newsize;         _endOfStorage _start n;     } } //增添数据 void push_back(const T x) {     if (capacity() size())   //这里要注意容量是否够用     {         int newcapacity capacity() 0 ? 4 : 2 * capacity();         reserve(newcapacity);     }     int newsize size();     _start[newsize] x;     _finish; } //删除数据 void pop_back() {     assert(size() 0);   //这里要注意容器是否为空     _finish--; } 普通构造函数       首先我们先实现无任何传入值的构造函数。这种情况只需初始化容器的各种数据即可不需要做任何增添。 vector() {     _start _finish _endOfStorage nullptr;   //直接将数据设为空 } 第二种构造方式这里模拟实现构造n个数据如vectorintv(5,8)初始化为5个8。 vector(int n, const T value T()) {     reserve(n);      //这里要先进行扩容     for (int i 0; i n; i)     {         push_back(value);       } } 第三种构造方式模拟实现迭代器的方式进行构造。因为数据类型未知所以这里还需要使用模板。 //这里迭代器要使用模板 templateclass InputIterator    //first指向开始位置last指向终点的下一位 vector(InputIterator first, InputIterator last)   {     int newsize last - first;       reserve(newsize);     for (int i 0; i newsize; i)     {         push_back(*(first i));     } } 拷贝构造函数 原理跟普通构造函数实现的机制一样这里就不做过多说明直接实现代码如下 vector(const vectorT v) {     int newsize v.capacity();     reserve(newsize);     for (int i 0; i newsize; i)     {         push_back(v._start[i]);     } } 三析构函数 析构函数在释放空间之后要记得将数据初始化以保证安全性。 ~vector() {     delete[] _start;     _start _finish _endOfStorage nullptr; } 四赋值运算符 赋值运算符的实现跟拷贝构造函数实现机制相同。实现拷贝后要返回拷贝后的容器以便实现连续赋值的情况。 vectorT operator (vectorT v) {     int newsize v.capacity();     reserve(newsize);     for (int i 0; i newsize; i)     {         push_back(v._start[i]);     }     return *this; } 五容器接口的实现 1迭代器实现 这里实现begin()、end()、cbegin()、cend()四种常用的迭代器。 //begin()和end()的实现 iterator begin() {     return _start; } iterator end() {     return _finish; } //cbegin()和cend()常量迭代器的实现 const_iterator cbegin() const {     const_iterator p (const_iterator)_start;     return p; } const_iterator cend() const {     const_iterator p (const_iterator)_finish;     return p; } 2“ [] ”运算符的实现 “ [] ” 运算符实现分为两种一种是变量的实现一种是常量const的实现。 //变量实现 T operator[](size_t pos) {     assert(pos 0 pos size());     return _start[pos]; } //常量实现 const T operator[](size_t pos)const {     assert(pos 0 pos size());     const T tem (const T)_start[pos];     return tem; } 3swap交换和resize重设大小 swap接口实现机制是容器的全部数据实现交换。resize实现时要考虑参数大于容器大小和小于容器大小时的不同情况。 //交换算法 void swap(vectorT v) {     std::swap(_start, v._start);     std::swap(_finish, v._finish);     std::swap(_endOfStorage, v._endOfStorage); } //设定大小算法 void resize(size_t n, const T value T()) {     assert(n 0);  //防止错误操作     if (n size())  //小于容器大小时的情况     {         _finish _start n;     }     else     //大于等于容器大小时的情况     {         reserve(n);         for (int i 0; i n - size(); i)         {             push_back(value);         }     } } 4insert插入和erase删除 这里实现insert插入要注意的是选择位置时因为不确定数据类型因此要在指定迭代器的位置进行插入最后返回该位置的迭代器。 erase删除位置与insert插入位置一样删除迭代器所指向的位置最后返回该位置的迭代器。 //插入算法在pos位置下插入数据x iterator insert(iterator pos, const T x) {     //要考虑指定插入的位置在合理范围之内     assert(pos _start pos _finish);     if (size() capacity())     {         reserve(size() 1);     }     for (iterator it _finish - 1; it pos; it--)     {         *(it 1) *(it);     }     *pos x;     return pos; } //删除算法删除pos位置下的数据 iterator erase(iterator pos) {     //要考虑指定删除的位置在合理范围之内     assert(size() 0);     assert(pos _start pos _finish);     for (iterator i pos; i _finish - 1; i)     {         *(i) *(i 1);     }     _finish--;     return pos; }
http://www.hkea.cn/news/14390243/

相关文章:

  • p2p网站建设制作wordpress用户权限
  • 怎么做网站站内搜索福田附近网站建设
  • 类似淘宝的网站怎么做的广州市建设集团网站首页
  • 巩义市网站建设培训班建设工程合同可以约定仲裁管辖吗
  • 深圳讯美网站建设零售管理系统哪个软件好
  • 无证做音频网站违法吗做标书的网站
  • wap网站下载深圳建设网站公司哪儿济南兴田德润有活动吗
  • 网站开发外包价格南宁企业网页设计
  • 成都网站运营公司设计师采集网站
  • 做关于车的网站好一分钟用自己的电脑做网站
  • 网站详细设计wordpress首页添加模块
  • 招生网站开发注册一个公司需要哪些手续
  • 南昌seo网站推广费用广州外贸营销型网站
  • 网站建设用英语怎么说asp网站生成静态
  • 网站备案个人使用专业手机网站公司吗
  • 酒泉网站建设平台网站建设费 广告
  • 品牌网站建设相关问题wordpress 主题 授权
  • 网站整体迁移该怎么做网站统计开放平台
  • 韶关市开发区建设局网站wordpress 微信 抓取
  • 怎样做艾条艾柱网站wordpress cms 模板
  • 上海哪家做网站好游戏开发入门
  • 怎么把dw做的网站传上去包头网站
  • 梅州建站哪里好搜索引擎排名查询
  • 铁路建设监理协会官方网站杭州产品设计公司排行
  • 做直播网站需要什么资质小程序报价单模板
  • 个人电子商务网站建设方案湖南网站建设多少钱
  • 视频网站的制作教程网站流量提供商
  • 选择网站模板注意事项沈阳网站开发制作
  • 肇庆免费模板建站上海集团有限公司
  • ic外贸网站建设wordpress 调用分类文章