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

公司网站模板最新网站优化 工具

公司网站模板最新,网站优化 工具,专门做衬衣网站,有哪些程序网站目录 #x1f495; 1.vector三个核心 #x1f495;2.begin函数#xff0c;end函数的实现#xff08;简单略讲#xff09; #x1f495;3.size函数#xff0c;capacity函数的实现 #xff08;简单略讲#xff09; #x1f495;4.reserve函数实现 #xff08;细节…目录 1.vector三个核心 2.begin函数end函数的实现简单略讲 3.size函数capacity函数的实现 简单略讲 4.reserve函数实现 细节详见 5.resize函数实现简单略讲纯小计算 6.其他功能函数实现略讲都是顺序表那一套没有改变  7.整体代码实现 8.底层模拟测试 .cpp 9.完结  一个人的坚持到底有多难  声明:此文内容基于此文章-:【C】STL——vector的使用 1.vector三个核心 在vector中核心成员并不是我们在数据结构实现的顺序表如sizecapacity,data,而是下面三个-: #pragma once #includeiostream #includeassert.h using namespace std; namespace yz {templateclass Tclass vector{typedef T* iterator;typedef const T* const_iterator;public:private:iterator _start nullptr;iterator _finish nullptr;iterator _end_of_storage nullptr;};} 我们把元素的地址T*,命名为迭代器类型iterator 接下来分别是顺序表起始位置的地址顺序表的 size 用 _finish 来表示顺序表的capacity用_end_of_storage来表示 2.begin函数end函数的实现简单略讲 我们知道vector库中的begin函数与end函数返回的虽然是迭代器但是可以像指针一样使用因此我们可以很好的实现如下-: iterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin()const{return _start;}const_iterator end()const{return _finish;} 3.size函数capacity函数的实现 简单略讲 size函数与capacity函数的实现更是简单直接用指针相减即可 size_t size(){return _finish - _start;}size_t capacity(){return _end_of_storage - _start;} 4.reserve函数实现 细节详见 代码看不懂的请往下看图片讲解 //reserve预留空间T* reserve(size_t n){size_t old_size size();if (n capacity()){T* tep new T[n1];//开辟n个空间1是为了单独考虑string//将内容复制过去for (int i 0; i size(); i){tep[i] _start[i];}delete[] _start;_start tep;_finish _start old_size;_end_of_storage _start n;tep nullptr;}return _start;} 我们知道capacity函数开辟的新空间只会增大不会缩小而开辟新空间我们需要做的第一件事就是转移数据 这里需要先思考下如何转移如果用strcpy只可以转移string类那怎么办?用memmove吗? 不memmove的复制时一个字节一个字节复制过去的虽然复制intdouble时没有问题但如果复制的是stirng类型我们知道string类的成员变量是字符串首地址在使用memmove复制时字符串的首地址原封不动的复制了过去这就会造成我们在释放旧空间后白进行了memmove的复制这是不可取的所以我们要用到for循环转移数据下面有图-: 转移数据思考完了我们接着思考为什么要old_size,我们拷贝完数据后需要转移的就是三大核心start,finish,和end_of_storage,那么我们将数据转移后释放掉原来的旧空间就会导致finish和end_of_storage指向的是野指针所以我们需要保留原来的old_size,这样才能让finish指向正确的位置 5.resize函数实现简单略讲纯小计算 //resize预留空间 T* resize(size_t n,const T val) {if (n size()){reserve(n);//先开辟出足够的空间size_t newsize n - size();while (newsize 0){*(_finish) val;newsize--;}}return _start; } 6.其他功能函数实现略讲都是顺序表那一套没有改变  //判断空 bool empty() {if (size() 0){return true;} } //尾插 void push_back(const T x) {if (size() capacity()) {size_t newcapacity capacity() 0 ? 4 : 2 * capacity();reverse(newcapacity);}*_finish x;_finish; } //尾删 void pop_back() {empty();*_finish 0;_finish--; } //指定位置插入 void insert(iterator pos, const T val) {assert(pos _start pos _finish);if (size() capacity()) {size_t count pos - _start;size_t newcapacity capacity() 0 ? 4 : 2 * capacity();reverse(newcapacity);pos _start count;}T* tep _finish;while (tep pos){*(tep) *(tep - 1);tep--;}*(pos) val;_finish; } void erase(iterator pos) {assert(pos _start pos _finish);empty();_finish--;while (pos _finish){*(pos) *(pos 1);pos;} } 7.整体代码实现 #pragma once #includeiostream #includeassert.h using namespace std; namespace yz {templateclass Tclass vector{public:typedef T* iterator;typedef const T* const_iterator;iterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin()const{return _start;}const_iterator end()const{return _finish;}size_t size(){return _finish - _start;}size_t capacity(){return _end_of_storage - _start;}//reserve预留空间T* reserve(size_t n){size_t old_size size();if (n capacity()){T* tep new T[n1];//开辟n个空间1是为了单独考虑string//将内容复制过去for (int i 0; i size(); i){tep[i] _start[i];}delete[] _start;_start tep;_finish _start old_size;_end_of_storage _start n;tep nullptr;}return _start;}//resize预留空间T* resize(size_t n,const T val){if (n size()){reserve(n);//先开辟出足够的空间size_t newsize n - size();while (newsize 0){*(_finish) val;newsize--;}}return _start;}//判断空bool empty(){if (size() 0){return true;}}//尾插void push_back(const T x){if (size() capacity()) {size_t newcapacity capacity() 0 ? 4 : 2 * capacity();reverse(newcapacity);}*_finish x;_finish;}//尾删void pop_back(){empty();*_finish 0;_finish--;}//指定位置插入void insert(iterator pos, const T val){assert(pos _start pos _finish);if (size() capacity()) {size_t count pos - _start;size_t newcapacity capacity() 0 ? 4 : 2 * capacity();reverse(newcapacity);pos _start count;}T* tep _finish;while (tep pos){*(tep) *(tep - 1);tep--;}*(pos) val;_finish;}void erase(iterator pos){assert(pos _start pos _finish);empty();_finish--;while (pos _finish){*(pos) *(pos 1);pos;}}private:iterator _start nullptr;iterator _finish nullptr;iterator _end_of_storage nullptr;};} 8.底层模拟测试 .cpp #define _CRT_SECURE_NO_WARNINGS #includevector.h int main() {yz::vectorint a1;/*a1.resize(200,3);couta1.size() a1.capacity();a1.empty();*/a1.insert(a1.begin(), 99);a1.insert(a1.begin(), 88);a1.push_back(0);a1.push_back(20);a1.push_back(28);a1.pop_back();a1.erase(a1.begin());a1.erase(a1.end()-1);a1.resize(200, 5);a1.reserve(300);yz::vectorint a2;if (a2.empty()){cout 空 endl;}for (auto e : a1){cout e ;}} 9.完结
http://www.pierceye.com/news/616635/

相关文章:

  • 网站备案是给什么进行备案seo如何优化关键词上首页
  • 怎么用qq邮箱做网站做网站一般注册哪几类商标
  • 建设银行网站未响应海外网网址
  • 安防监控网站模板忻州市建设厅网站首页
  • 建网站需要什么条件网站运行费用预算
  • 网站建设打广告网站翻页代码
  • 自己怎么免费做网站平面设计师赚钱吗
  • 南宁建站模板源码公众号开发用什么技术
  • 北京自助建站软件软件外包公司的优势和劣势
  • 网页 代码怎么做网站建设规划展览馆网站的优势
  • 山西省建设主管部门网站单位网站建设意义
  • 怎么建设自己收费网站电影网站建设费用
  • 黑龙江建设网一体化平台seo网站关键词优化价格
  • 西宁做网站公司电话找公司网站建设
  • 有哪些企业可以做招聘的网站机械网站开发方案
  • 九江专业网站建设定制千库网免费素材图库
  • wordpress云建站太仓网站建设网站推广
  • 辽宁网站推广的目的西安企业做网站多少钱
  • 重庆微信网站建设网站平台网站怎么做
  • 90设计网站几次是什么意思厦门建设工程信息网官网
  • 小说章节收费网站建设东莞网络营销网站建设
  • 找工作网站如何设计一款软件
  • 贵金属企业网站源码手机端网站加盟
  • 大连企业网站排名优化平面设计和网页设计
  • 广州网站建设工作室招聘文创产品设计分析
  • 产品是做网站seo网站设计费用
  • 公司网站的搭建方案做海报图片的网站
  • 纯文本网站建设小米发布会最新
  • 定制版网站建设费用网站服务器干啥
  • 漂亮的网站是什么建设出来的弄一个小程序要多少钱