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

北京网站优化常识app模板

北京网站优化常识,app模板,免费的html代码模板,建设银行网站的特点分析可以把vector看作升级版的数组#xff0c;可采用下标进行访问#xff0c;非常高效#xff0c;大小可动态改变#xff0c;会自动扩容#xff0c;数据存储在堆空间上。 VECROR 成员变量、函数及模板总览构造函数和析构函数无参构造函数构造n个元素大小的空间并初始化通过某个… 可以把vector看作升级版的数组可采用下标进行访问非常高效大小可动态改变会自动扩容数据存储在堆空间上。 VECROR 成员变量、函数及模板总览构造函数和析构函数无参构造函数构造n个元素大小的空间并初始化通过某个对象的两个迭代器来构造拷贝构造函数赋值运算符重载析构函数 迭代器返回第一个元素迭代器返回最后一个元素迭代器 容量和大小相关函数返回当前大小返回当前容量上限reserve函数resize函数 访问元素接口[ ]运算符重载 添加元素与删除元素尾插指定位置插入元素删除指定位置元素尾删交换 源代码 成员变量、函数及模板总览 namespace ahunb{templateclass Tclass vector{public:// Vector的迭代器是一个指针 //typedef T* iteratortypedef const T* const_iterator/ Iterators /iterator begin()iterator end()const_iterator cbegin()const_iterator cend() const// construct and destroy vector()vector(int n, const T value T())templateclass InputIteratorvector(InputIterator first, InputIterator last)vector(const vectorT v)vectorT operator (vectorT v)~vector()/ capacity /size_t size() const size_t capacity() constvoid reserve(size_t n)void resize(size_t n, const T value T())///Element access//T operator[](size_t pos)const T operator[](size_t pos)const///modifiers/void push_back(const T x)void pop_back()void swap(vectorT v)iterator insert(iterator pos, const T x)iterator erase(Iterator pos)private:iterator _start; // 指向数据块的开始iterator _finish; // 指向有效数据的尾iterator _endOfStorage; // 指向存储容量的尾};构造函数和析构函数 无参构造函数 vector() {}构造n个元素大小的空间并初始化 vector(int n, const T value T()) {resize(n);for (int i 0; i n; i){vector[i] value;} }通过某个对象的两个迭代器来构造 templateclass InputIteratorvector(InputIterator first, InputIterator last) {while (first ! last){push_back(*first);first;} }拷贝构造函数 vector(const vectorT v) {reserve(v.capacity());for (auto e : v){push_back(e);} }赋值运算符重载 vectorT operator (vectorT v) {swap(v);return *this; }析构函数 ~vector() {delete[] _start;_start _finish _endofstorage nullptr; }迭代器 返回第一个元素迭代器 多提供一个加const的 以防有const对象要调用 iterator begin() {return _start; } const_iterator begin() const {return _start; }返回最后一个元素迭代器 iterator end() {return _finish; } const_iterator end() const {return _finish; }容量和大小相关函数 返回当前大小 size_t size() {return _finish - _start; } const size_t size() const {return _finish - _start; }返回当前容量上限 size_t capacity() {return _endofstorage - _start; }const size_t capacity() const {return _endofstorage - _start; }reserve函数 改变vector的capacity容量变量 当ncapacity将capacity改为n否则不变 对新空间进行拷贝时要深拷贝否则delete时会出现野指针 void reserve(size_t n) {if (n capacity()){int sz size();iterator tmp new T[n];if (_start){for (int i 0; i sz; i){tmp[i] _start[i];//注意使用深拷贝}delete[] _start;}_start tmp;_finish _start sz;_endofstorage _startn;} }resize函数 改变vector的size当前大小变量 当nsize时将大小改为n并将新增加的大小初始化 否则直接将大小改为n就可以 void resize(size_t n, const T value T()) {if (n size()){reserve(n);while (_finish _start n){*_finish value;_finish;}}else{_finish _start n;} }访问元素接口 [ ]运算符重载 T operator[](size_t pos) {assert(pos size());return _start[pos]; }const T operator[](size_t pos)const {assert(pos size());return _start[pos]; }添加元素与删除元素 尾插 void push_back(const T x) {if (_finish _endofstorage){int cp capacity();cp (cp 0 ? 4 : cp * 2);reserve(cp);}*_finish x;_finish; }指定位置插入元素 注意扩容之后会存在pos失效问题因为扩容之后原对象改变了_start等指针指向了新的区间但pos指向的还是原来的区间所以在第七行和第九行对pos进行了更新。 iterator insert(iterator pos, const T x) {assert(pos finish);assert(pos _start);if (_finish _endofstorage){int n pos - _start;reserve(capacity() 1);pos _start n;}iterator end _finish;while (end pos){*end *(end - 1);end--;}*pos x;_finish;return pos; }删除指定位置元素 iterator erase(iterator pos) {assert(pos finish);assert(pos _start);if (_finish - 1 ! pos){iterator begin pos;while (begin _finish - 1){*begin *(begin 1);}}_finish--;return pos1; }尾删 void pop_back() {erase(_finish - 1); }交换 void swap(vectorT v) {std::swap(_start, v._start);std::swap(_finish, v._finish);std::swap(_endofstorage, v._endofstorage); }源代码 //vector.h #define _CRT_SECURE_NO_WARNINGS #include iostream #include assert.husing namespace std;namespace ahu {template class Tclass vector {public:typedef T* iterator;typedef const T* const_iterator;vector(){}vector(int n, const T value T()){resize(n);for (int i 0; i n; i){vector[i] value;}}templateclass InputIteratorvector(InputIterator first, InputIterator last){while (first ! last){push_back(*first);first;}}vector(const vectorT v){reserve(v.capacity());for (auto e : v){push_back(e);}}vectorT operator (vectorT v){swap(v);return *this;}~vector(){delete[] _start;_start _finish _endofstorage nullptr;}//Iteratoriterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin() const{return _start;}const_iterator end() const{return _finish;}//Capacitysize_t size(){return _finish - _start;}const size_t size() const {return _finish - _start;}size_t capacity(){return _endofstorage - _start;}const size_t capacity() const{return _endofstorage - _start;}void reserve(size_t n){if (n capacity()){int sz size();iterator tmp new T[n];if (_start){for (int i 0; i sz; i){tmp[i] _start[i];}delete[] _start;}_start tmp;_finish _start sz;_endofstorage _startn;}}void resize(size_t n, const T value T()){if (n size()){reserve(n);while (_finish _start n){*_finish value;_finish;}_finish _start n;}else{_finish _start n;}}//Element accessT operator[](size_t pos){assert(pos size());return _start[pos];}const T operator[](size_t pos)const{assert(pos size());return _start[pos];}//Modifiersvoid push_back(const T x){if (_finish _endofstorage){int cp capacity();cp (cp 0 ? 4 : cp * 2);reserve(cp);}*_finish x;_finish;}void pop_back(){erase(_finish - 1);}void swap(vectorT v){std::swap(_start, v._start);std::swap(_finish, v._finish);std::swap(_endofstorage, v._endofstorage);}iterator insert(iterator pos, const T x){assert(pos finish);assert(pos _start);if (_finish _endofstorage){int n pos - _start;reserve(capacity() 1);pos _start n;}iterator end _finish;while (end pos){*end *(end - 1);end--;}*pos x;_finish;return pos;}iterator erase(iterator pos){assert(pos finish);assert(pos _start);if (_finish - 1 ! pos){iterator begin pos;while (begin _finish - 1){*begin *(begin 1);}}_finish--;return pos1;}private:iterator _start nullptr; // 指向数据块的开始iterator _finish nullptr; // 指向有效数据的尾iterator _endofstorage nullptr; // 指向存储容量的尾}; }//vector.cpp #define _CRT_SECURE_NO_WARNINGS #include vector.h //#include vector using namespace ahu; int main() {vectorint v1;v1.push_back(1);v1.push_back(1);v1.push_back(1);v1.push_back(1);v1.push_back(1);v1.push_back(1);v1.push_back(1);v1.push_back(1);//v1.push_back(1);vectorint v2(v1);for (size_t i 0; i v2.size(); i){cout v2[i] endl;}cout ------------------------------------- endl;//v2.reserve(100);//cout v2.capacity() endl;//cout v2.size()endl;//v2.resize(50);//cout v2.capacity() endl;//cout v2.size() endl;//v2.reserve(25);//cout v2.capacity() endl;//cout v2.size() endl;v2.insert(v2.begin()3, 100);for (size_t i 0; i v2.size(); i){cout v2[i] endl;}cout ------------------------------------- endl;v2.erase(v2.begin() 9);v2.erase(v2.begin() 8);v2.erase(v2.begin() 7);v2.erase(v2.begin() 6);v2.erase(v2.begin() 5);v2.erase(v2.begin() 4);v2.erase(v2.begin()3);for (size_t i 0; i v2.size(); i){cout v2[i] endl;} } ✨本文收录于C语法及练习 当你喜欢一篇文章时点赞、收藏和关注是最好的支持方式。如果你喜欢我的文章请不要吝啬你的支持点赞、收藏⭐和关注都是对我最好的鼓励。感谢你们的支持如有问题欢迎指正
http://www.hkea.cn/news/14358475/

相关文章:

  • 奥远科技网站建设流程网站改域名如何做百度优化
  • 建设多语言网站php视频网站开发
  • 网站改版效果图怎么做网站 形象入口页
  • 移动网站建设指南开发平台教程
  • 展示型企业网站例子wordpress 3.7
  • 怎么做微信钓鱼网站做番号类网站违法吗
  • 商城网站制作教程东莞网络做推广公司
  • 网上做调查网站有哪些十大营销手段
  • 资讯类网站源码网站建设平台资讯
  • 做网站用的手机网站制作细节
  • 做调查赚钱的网站济南网站建设第六网建
  • 网站开发人员没有按照设计开发中国大连网站
  • 如何做高端网站沧州纵横人才网
  • 昆明网站建设服务蛋糕店网页设计图片
  • 沈阳网站建设培训学校西安网站建设专家
  • 标志vi设计机构合肥网站关键词优化
  • 东城响应式网站建设济南网站建设tailook
  • 安徽建新建设工程有限公司网站中国书画画廊网站模板
  • 查网站服务器速度企业软文代写
  • 上海资格证报名网站淘宝店铺怎么运营
  • .net 网站生成安装文件目录网络维护是什么专业
  • 手机网站内容管理摄影公司网站
  • 什么网站专做衣服网站404页面模板
  • 鄂尔多斯网站网站建设景安免费虚拟主机
  • 服饰网站 模板深圳招聘网络推广
  • 营销方案网站浏览国外网站 dns
  • 广州专业建设网站地下城做解封任务的网站
  • 最好的书籍设计网站大气的企业网站
  • 网站开发的岗位网站手机模板的特点
  • 如何做网站清风制作什么叫宣传型网站