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

做一个网站放网上要多少钱宁波软件开发公司排名

做一个网站放网上要多少钱,宁波软件开发公司排名,郑州网课老师,《网站开发实训》实验报告vector的介绍 此主题介绍转载自(https://cplusplus.com/reference/vector/vector/) 1.vector是一个表示可变大小数组的序列容器 2.vector同数组一样#xff0c;采用连续存储空间来存储元素#xff0c;这样可以用下标来对vector中的元素进行访问#xff0c;但是vector的大…vector的介绍 此主题介绍转载自(https://cplusplus.com/reference/vector/vector/) 1.vector是一个表示可变大小数组的序列容器 2.vector同数组一样采用连续存储空间来存储元素这样可以用下标来对vector中的元素进行访问但是vector的大小可以动态改变且可以其元素被容器vector自动处理。 3.从本质上讲vector使用动态分配数组来存储器元素当有元素插入的时候这个数组需要重新分配大小然后再将全部元素移入到这个数组里但是这个过程及其消耗时间所以为了解决这个问题vector并不会每次都重新分配大小。 vector的使用/用法 数组的创建 vector int v1;//创建一个整型数组v1 vector int v2(10,0);//初始化一个数组count nums 存放count个nums vectorint v5(v4);//将v4中的元素拷贝给v5vector iterator 迭代器的使用 vectorint v3(v2.begin(),v2.end());//string类和vector类的的迭代器是互通的 string str(hello world); vectorint v4(str.begin(), str.end()); vectorint v5(v4);vectorint::iterator it v4.begin();//同时也可以进行迭代器实现循环遍历 while (it ! v4.end()) {cout *it ;it; } cout endl;for (auto e : v5) {cout e ; } cout endl; vector空间增长相关函数 vectorint v; v.reserve(100);//reserve改变的是capacity v.resize(100);//reserve改变的是size 若仅开拓空间那么仍然不能使用v.size();//读取size v.capacity();//读取capacity vector的增删查改 vectorint v; //尾插 v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4);//尾删 v.pop_back()//查找 auto itfind(v.begin(),v.end(),3);//first last dest(firts和last都是迭代器dest是查找的目标会返回查找目标的下标)//删除 it find(v.begin(),v.end(),3); v.erase(it);//删除找到需要删除的数据的下标然后进行删除//清除数据 v.clear();//释放空间呢 v.shrink_to_fit();//同时也能按照数组下标去访问 for(int i0;iv.size();i) {coutv[i]endl; }vector类和string类的函数用法基本相同所以这里不作过多的解释用法也很简单详细可以参考(https://cplusplus.com/reference/vector/vector/) vector简要模拟 首先我们要知道vector实现的底层逻辑。找其源代码 可以知道其是进行指针的初始化模板命名重命名为 iterator T* iterator 大致模板 namespace an {templateclass Tclass vector {public:typedef T* iterator;typedef const T* const_iterator;iterator begin()iterator end()vector(){}vector(size_t n,const T valT())vector(const vectorT v)void swap(vectorT v)vectorT operator(vectorT tmp)~vector()void reserve(size_t n)void resize(size_t n,const T valT())void push_back(const T x)T operator[](size_t pos)const T operator[](size_t pos) constsize_t capacity();size_t size();void insert(iterator pos, const T x)iterator erase(iterator pos)private:iterator _start;//原生指针,其实就是T* iterator _finish;iterator _endofstorage;}; } 初始化 vector():_start(nullptr),_finish(nullptr),_endofstorage(nullptr) {} ~vector() {delete[] _start;_start_finish_endofstoragenullptr; } 获取大小/容量 size_t size() const {return _finish-_start;//指针相减就是个数 }size_t capacity()const {return _endofstorage-_start; } 迭代器开头/结尾 iterator begin() {return _start; } iterator end() {return _finish; } 开拓空间/重新定义空间 void reserve(size_t n) {if(ncapacity){size_t szsize();T* tmpnew T[n];//扩容需要先开辟一个符合大小的空间然后再拷贝进去if(_start)//如果拷贝的空间内不为空{for(size_t i0;isz;i){tmp[i]_start[i];//由于是指针所以需要深拷贝memcpy仅能支持浅拷贝}delete[] _start;//清除空间} _starttmp;_finish_startsz;_endofstorage_startn;} }void resize(size_t n,const T valT()) {if(nsize()) { _finish_startn;}else{reserve(n);while(_finish_startn) {*_finishval;_finish;} } } 尾插 void push_back(const T x) {if(_finish_endofstorage)//扩容里的代码也可以用reserve(capacity()0?4:capacity()*2)来代替{size_t szsize();size_t cpcapacity()0?4:22*capacity();T* tmpnew T[cp];if(_start!nullptr){memcpy(tmp,_start,sizeof(T)*size());delete[] _start;}_starttmp;_finish_startsz;_endofstorage_startcp;} *_finishx;//最后一个位置赋值_finish;//地址往后挪一位 } 下标引用读取 T operator[](size_t pos) {assert(possize());return _start[pos]; }const T operator[](size_t pos)const {assert(possize());return _start[pos]; } 随机位置插入/删除 void insert(iterator pos,const T x) {assert(pos_start);assert(pos_finish);if(_finish_endofstorage){size_t lenpos-_start;reserve(capacity() 0 ? 4 : capacity() * 2);pos_startlen;//注意这里更新后的start指向的空间和原来的pos不一样需要进行更新}iterator end_finish-1;while(endpos){*(end1)*end;--end;}*posx;_finish; }iterator erase(iterator pos) {assert(pos_start);assert(pos_finish);iterator itpos1;while(it_finish){*(it-1)*it;it;}--_finish;return pos;//返回删除数据的下一个数据的位置 } 赋值重载/拷贝构造 vector(const vectorT v) {reserve(v.capacity());for(auto e: v){push_back(e);} }void swap(vectorT v) {std::swap(_start, v._start);std::swap(_finish, v._finish);std::swap(_endofstorage, v._endofstorage); } vectorT operator(vectorT tmp) {swap(tmp);//有this指针直接作用于要作用的对象return *this; } 迭代器初始化 templateclass InputIterator vector(InputIterator first, InputIterator last)//迭代器初始化 {while (first ! last){push_back(*first);first;} } vector初始值初始化 vector(size_t n,const T valT())//n个数据去初始化 {reserve(capacity());for (size_t i 0; i n; i){push_back(val);} } //为了与迭代器的模板类型进行区分所以这里形参T加上了 符号 统一初始化 因为上述有多个构造函数为了简化代码不出现多个初始化列表所以在声明的时候就进行定义 private://原生指针,其实就是T* iterator _startnullptr;//指向数据的开始 iterator _finishnullptr;//指向数据的结束iterator _endofstoragenullptr;//指向空间位置的结束
http://www.hkea.cn/news/14340847/

相关文章:

  • 做网站哪里wordpress评论显示数字ip
  • 鹿泉外贸网站建设汕头seo管理
  • 广州比较好的网站设计微信小程序app
  • 专做洗衣柜的网站建行网址多少
  • 网络建设服务与网站运营推广青岛seo霸屏
  • 网站升级中 html域名到期换个公司做网站
  • 网站如何提交百度收录ninety ajax wordpress
  • 威海临港区建设局网站下载网站怎么下载
  • 制作网站的步骤和过程网站升级改造建设方案
  • 搜狗短链接生成长沙专业seo优化推荐
  • 推广简短吸引人的话厦门seo代理商
  • 企业网站 静态页面怎样创建网站域名平台
  • 模板网站的建设方式与方法包装设计价格
  • php中网站搜索功能实现平台网址怎么查询
  • 深圳金融投资网站建设网站地图定位怎么做
  • 内网电脑做网站抚州公司做网站
  • 怎么样模仿网站网站链接推广怎么赚钱
  • 郑州做网站哪家比较好亚马逊关键词
  • 福州网站外包国外建筑设计网站
  • 网站内容图片怎么做的北京快三开奖走势图一定牛
  • 网站怎样制作 优帮云如何建造网站
  • 北京网站搭建费用社交网站建设网
  • 易展 网站建设墙蛙网站谁家做的
  • 做播放器电影网站需要多少钱6建立自我追求无我什么意思
  • 企业网站的建设过程com域名便宜
  • 用asp.net做网站计数器泰安网络安全工程师培训
  • 北京做网站多少钱seo系统培训哪家好
  • 引流推广网站易订货小程序怎么收费
  • 帮忙做ppt的网站网站同时做竞价和优化可以
  • 代申请可信网站投票网站怎么制作