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

动态字设计网站wordpress挖

动态字设计网站,wordpress挖,中小网站建设都有哪些,政务服务大厅网站建设方案目录 一、vector的数据结构 二、vector的构造 三、vector的增删查改及空间管理 四、全部代码 一、vector的数据结构 vector以线性连续空间为基础来定义数据结构以及扩展功能。vector的两个迭代器#xff0c;分别是start和finish#xff0c;分别指向配置得来的已被使用的空…目录 一、vector的数据结构 二、vector的构造 三、vector的增删查改及空间管理 四、全部代码 一、vector的数据结构 vector以线性连续空间为基础来定义数据结构以及扩展功能。vector的两个迭代器分别是start和finish分别指向配置得来的已被使用的空间。还有一个迭代器end_of_storage指向整块连续空间的尾端。  iterator _start nullptr; iterator _finish nullptr; iterator _endofstorage nullptr; 此处迭代器变量名前加‘_表示我们不是真正的vector而是模拟出来的  这些迭代器应该被private所修饰那么可以设计如下构造函数来提取vector的首尾这样既保护了迭代器又便于提取首位 iterator begin() {return _start; }iterator end() {return _finish; }const_iterator begin() const {return _start; }const_iterator end() const {return _finish; } vector的实际配置大小要比需求量大一些以便将来可以扩充。也就是说vector的容量大小永远大于或者等于其大小。一旦其容量等于其大小即是满载当有新的元素加入时vector就要进行扩容。 示意图如下  二、vector的构造 vector的构造如下 (constructor)构造函数声明接口说明vector();无参构造vectorsize_type n, const value_type val value_type());构造并初始化n个valvector (const vector x);拷贝构造vector (InputIterator first, InputIterator last);使用迭代器进行初始化构造 我们来一一实现。 无参构造 vector() {} 初始化n个构造 vector(size_t n, const T val T()) {resize(n, val); }vector(int n, const T val T()) {resize(n, val); } 拷贝构造 vector(const vectorT v) {_start new T[v.capacity()];//memcpy(_start, v._start, sizeof(T)*v.size());for (size_t i 0; i v.size(); i){_start[i] v._start[i];}_finish _start v.size();_endofstorage _start v.capacity(); } 使用迭代器初始化构造 templateclass InputIterator vector(InputIterator first, InputIterator last) {while (first ! last){push_back(*first);first;} } 除此之外也可以重载来实现构造原理同拷贝构造 vectorT operator(vectorT v) {swap(v);return *this; } 最后既然有构造函数那必然有析构函数呀 ~vector() {if (_start){delete[] _start;_start _finish _endofstorage nullptr;} } 三、vector的增删查改及空间管理 vector的增删查改功能函数如下 vector增删查改接口说明push_back尾插pop_back尾删find查找。注意这个是算法模块实现不是vector的成员接口insert在position之前插入valerase删除position位置的数据swap交换两个vector的数据空间operator[]像数组一样访问 要实现push_back我们先实现insert iterator insert(iterator pos, const T x) {assert(pos _start pos _finish);if (_finish _endofstorage){size_t len pos - _start;size_t newcapacity capacity() 0 ? 4 : capacity() * 2;reserve(newcapacity);pos _start len;}iterator end _finish - 1;while (end pos){*(end 1) *end;--end;}*pos x;_finish;return pos; } 这样在设计push_back时直接调用insert函数就好 void push_back(const T x) {insert(end(), x); } 要实现pop_back不妨参考push_back的实现过程先实现erase iterator erase(iterator pos) {assert(pos _start pos _finish);iterator it pos 1;while (it ! _finish){*(it - 1) *it;it;}--_finish;return pos; } 再直接调用erase即可实现pop_back void pop_back() {erase(--end()); } 要交换两个vector的数据空间的话把关键迭代器交换即可 void swap(vectorT v) {std::swap(_start, v._start);std::swap(_finish, v._finish);std::swap(_endofstorage, v._endofstorage); } operator[]的实现如下 T operator[](size_t pos) {assert(pos size());return _start[pos]; }const T operator[](size_t pos) const {assert(pos size());return _start[pos]; } vector的空间管理功能如下 容量空间接口说明size获取数据个数capacity获取容量大小empty判断是否为空resize改变vector的sizereserve改变vector的capacity 前三个都很简单返回相应的值即可 size_t size() const {return _finish - _start; }size_t capacity() const {return _endofstorage - _start; }bool empyt() const {return ((_endofstorage - _start) 0 ? true : false); } 重点实现的是resize和reserve resize如下 void resize(size_t n, const T val T()) {if (n size()){_finish _start n;}else{reserve(n);while (_finish ! _start n){*_finish val;_finish;}} } reserve如下 void reserve(size_t n) {if (n capacity()){size_t sz size();T* tmp new T[n];if (_start){for (size_t i 0; i sz; i){tmp[i] _start[i];}delete[] _start;}_start tmp;_finish _start sz;_endofstorage _start n;} } 四、全部代码 全部代码如下 #includeassert.hnamespace bit {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;}vector(size_t n, const T val T()){resize(n, val);}vector(int n, const T val T()){resize(n, val);}templateclass InputIteratorvector(InputIterator first, InputIterator last){while (first ! last){push_back(*first);first;}}vector(){}vector(const vectorT v){_start new T[v.capacity()];for (size_t i 0; i v.size(); i){_start[i] v._start[i];}_finish _start v.size();_endofstorage _start v.capacity();}void swap(vectorT v){std::swap(_start, v._start);std::swap(_finish, v._finish);std::swap(_endofstorage, v._endofstorage);}vectorT operator(vectorT v){swap(v);return *this;}~vector(){if (_start){delete[] _start;_start _finish _endofstorage nullptr;}}void reserve(size_t n){if (n capacity()){size_t sz size();T* tmp new T[n];if (_start){for (size_t i 0; i sz; i){tmp[i] _start[i];}delete[] _start;}_start tmp;_finish _start sz;_endofstorage _start n;}}void resize(size_t n, const T val T()){if (n size()){_finish _start n;}else{reserve(n);while (_finish ! _start n){*_finish val;_finish;}}}void push_back(const T x){insert(end(), x);}void pop_back(){erase(--end());}size_t capacity() const{return _endofstorage - _start;}size_t size() const{return _finish - _start;}T operator[](size_t pos){assert(pos size());return _start[pos];}const T operator[](size_t pos) const{assert(pos size());return _start[pos];}iterator insert(iterator pos, const T x){assert(pos _start pos _finish);if (_finish _endofstorage){size_t len pos - _start;size_t newcapacity capacity() 0 ? 4 : capacity() * 2;reserve(newcapacity);// 解决pos迭代器失效问题pos _start len;}iterator end _finish - 1;while (end pos){*(end 1) *end;--end;}*pos x;_finish;return pos;}iterator erase(iterator pos){assert(pos _start pos _finish);iterator it pos 1;while (it ! _finish){*(it - 1) *it;it;}--_finish;return pos;}private:iterator _start nullptr;iterator _finish nullptr;iterator _endofstorage nullptr;}; }
http://www.dnsts.com.cn/news/217180.html

相关文章:

  • 去哪儿网站上做民宿需要材料东莞 骏域网站建设
  • 只放一个图片做网站关键词在线下载
  • 苏州专业做网站公司php+html转+wordpress
  • 网站备案需要钱吗福州seo代理商
  • 怎样做网站设计深圳led网站建设
  • 济宁建设局官方网站网站建设制作方案
  • 网站改版需要注意什么自适应自助建站网站
  • 怎么用ps做网站上的产品图重庆市有几个区
  • 大鹏附近网站建设广告片拍摄的具体流程
  • 嘉兴建设中学网站网站如何添加js代码
  • lol小米和谁做的视频网站重庆营销型网站开发公司电话
  • 企业网站排名提升软件能优化网站架构的建设
  • 网站开发需要多少钱服务网站地图制作方法
  • 厦门网站建设策划网易企业邮箱 登录
  • 网站首页设计收费定制公交app
  • 网站开发建设专业做轻淘客网站要多大的空间
  • 开发手机网站用什么语言姜堰区住房和城乡建设局网站
  • 北京做网站最好的公司站长统计app进入网址
  • 怎么做平台网站吗做网站优化有什么作用
  • 商业网站网址学历提升专升本
  • 公司营销型网站公司本地南昌网站建设
  • 自主建站平顶山建设银行网站
  • 企业建立网站的优势松江洞泾网站建设
  • 盘锦建设资质网站企业网站功能模块
  • 温州网站建设公司公司哪家好女性手表网站
  • 交通行业门户网站建设的必要性东莞详细页设计
  • 宜城网站开发新科网站建设
  • 知乎 php网站开发书籍在线电子商务网站开发
  • 坪洲网站建设wordpress主题自动启动插件
  • 哪里有网站模板下载自己怎么在网上注册公司