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

百汇游戏网站开发商英文域名在哪个网站查询

百汇游戏网站开发商,英文域名在哪个网站查询,设计app,如何制作简易 网站前言#xff1a; vector的部分源码#xff1a; #xff08;做过删除#xff0c;留下关键信息#xff09; vector的使用 构造函数#xff1a; 1 无参构造 vectorint v1; 2 构造并初始化n个val vectorint v2(5,1);3 拷贝构造 vectorint v3…前言 vector的部分源码 做过删除留下关键信息 vector的使用   构造函数 1 无参构造   vectorint v1; 2 构造并初始化n个val vectorint v2(5,1);3 拷贝构造 vectorint v3(v2);4 使用迭代器进行初始化构造  迭代器可以是任意容器的迭代器 vectorint v3(v2.begin(), v2.end());string s(hello);vectorint v3(s.begin(), s.end()); vector的 iterator 的使用   1 beginend 顺序 获取第一个数据位置的iterator/const_iterator 获取最后一个数据的下一个位置的iterator/const_iterator string s(hello);vectorint v2(s.begin(),s.end());vectorint::iterator it v2.begin();//auto it v2.begin();while (it ! v2.end()){cout *it ;it;}cout endl; 有迭代器就可以使用范围for遍历数组 for (auto e : v2){cout e ;}cout endl; const对象使用const迭代器进行遍历打印 const vectorint v(5,3);vectorint::const_iterator it v.begin();while (it ! v.end()){cout *it ;it;}cout endl; 2 rbeginrend逆序  获取最后一个数据位置的reverse_iterator/const_reverse_iterator获取第一个数据前一个位置的 reverse_iterator/const_reverse_iterator string s(hello);vectorint v2(s.begin(),s.end());vectorint::reverse_iterator rit v2.rbegin();//auto rit v2.rbegin();while (rit ! v2.rend()){cout *rit ;rit;}cout endl; vector的容量空间 size获取数据个数 capacity获取容量大小 empty判断是否为空 1 resize 改变vector的size reisze(size_t n, const T data T()) nsize 删除作用 sizencapacitty 插入作用 ncapacity 扩容插入  传参给val就用传过来的值若没有传参则用缺省值匿名对象先调用构造完成初始化拷贝构造val  可完成开空间初始化 vectorint v;v.resize(4); 2 reserve  改变vector的capacity reserve只负责开辟空间如果确定知道需要用多少空间reserve可以缓解vector增容的代价缺陷问题   vectorint v;//v.reserve(100);size_t sz v.capacity();for (size_t i 0; i 100; i){v.push_back(i);if (sz ! v.capacity()){sz v.capacity();cout 扩容: sz endl;}} 使用reserve没有发生扩容 vectorint v;v.reserve(100);size_t sz v.capacity();for (size_t i 0; i 100; i){v.push_back(i);if (sz ! v.capacity()){sz v.capacity();cout 扩容: sz endl;}} 如果已经确定vector中要存储元素大概个数可以提前将空间设置足够就可以避免边插入边扩容导致效率低下的问题了 vector 增删查改 1 push_back尾插 2 pop_back尾删 vectorint v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);vectorint::iterator it v.begin();while (it ! v.end()){cout *it ;it;}cout endl;v.pop_back();v.pop_back();it v.begin();while (it ! v.end()){cout *it ;it;}cout endl; 3 find find不是vector自身提供的方法是STL提供的算法是算法模块实现不是vector的成员接口 4 insert 在指定位置前插入值为val的元素比如3之前插入30,如果没有则不插入 5 erase  vectorint v{ 1,2,3 ,4};// 使用列表方式初始化C11新语法vectorint::iterator pos find(v.begin(), v.end(), 3);//1. 先使用find查找3所在位置if (pos ! v.end()){v.insert(pos, 20);// 2. 在pos位置之前插入30}auto it v.begin();while (it ! v.end()){cout *it ;it;}cout endl;pos find(v.begin(), v.end(), 3);v.erase(pos);it v.begin();while (it ! v.end()){cout *it ;it;}cout endl; insert和erase以后迭代器都失效了不能在访问所以以上代码中的迭代器pos在insert以后失效重新赋值后才可以使用 vector 迭代器失效问题 迭代器的主要作用就是让算法能够不用关心底层数据结构其底层实际就是一个指针或者是对指针进行了封装比如vector的迭代器就是原生态指针T*迭代器失效实际就是迭代器底层对应指针所指向的空间被销毁了而使用一块已经被释放的空间造成的后果是程序崩溃(即如果继续使用已经失效的迭代器程序可能会崩溃) 迭代器失效解决办法在使用前对迭代器重新赋值即可   对于vector可能会导致其迭代器失效的操作有 1. 会引起其底层空间改变的操作都有可能使迭代器失效   比如resize、reserve、insert、assign、push_back等 vectorint v{ 1,2,3,4,5,6 };auto it v.begin();v.resize(100, 8);//扩容了旧空间被释放掉//v.reserve(100)//扩容了//v.insert(v.begin(), 0);//扩容了//v.push_back(0);//扩容了//v.assign(100, 8);//扩容了while (it ! v.end())//操作的是已经释放掉的旧空间程序崩溃{cout *it ;it;}cout endl; 程序崩溃原因以上操作都有可能会导致vector扩容一旦扩容vector底层原理旧空间被释放掉而在打印时it使用的是已经释放掉的旧空间在对it迭代器操作时实际操作的是一块已经被释放的空间而引起代码运行时崩溃 解决方案给it重新赋值即可   vectorint v{ 1,2,3,4,5,6 };auto it v.begin();v.resize(100, 8);it v.begin();//重新赋值while (it ! v.end()){cout *it ;it;}cout endl; 2. 指定位置元素的删除操作--erase   vectorint v{ 1,2,3,4,5,6 };auto pos find(v.begin(), v.end(), 5);v.erase(pos); 删除pos位置的数据导致pos迭代器失效cout *pos endl;//非法访问 erase删除pos位置元素后pos位置之后的元素会全部往前移没有导致底层空间的改变理论上讲迭代器不应该会失效但是如果pos刚好是最后一个元素删完之后pos刚好是end的位置而end位置是没有元素的那么pos就失效了。因此删除vector中任意位置上元素时vs就认为该位置迭代器失效了   下面来看实例 删除vector中所有的偶数 错误代码 vectorint v{ 1, 2, 3, 4 };auto it v.begin();while (it ! v.end()){if (*it % 2 0)v.erase(it);//erase以后it迭代器失效it;//报错} 正确代码 vectorint v{ 1, 2, 3, 4 };auto it v.begin();while (it ! v.end()){if (*it % 2 0){it v.erase(it);//it失效重新赋值it成为下一个要判断的数据的迭代器}else{it;}}for (auto e : v){cout e ;}cout endl; 3 注意 Linux下g编译器对迭代器失效的检测并不是非常严格处理也没有vs下极端 1. 扩容之后迭代器已经失效了程序虽然可以运行但是运行结果已经不对了 2. erase删除任意位置代码后linux下迭代器并没有失效因为空间还是原来的空间it的位置还是有效的 3 erase删除的迭代器如果是最后一个元素it已经等于end失效了it导致程序崩溃 4 与vector类似string在插入扩容操作erase之后迭代器也会失效   vector的遍历 1 operator[] vectorint v{ 1,2,3,4 };for (size_t i 0; i v.size(); i){v[i] * 10;//写cout v[i] ;//读} 2 迭代器遍历 vectorint v{ 1,2,3,4 };vectorint::iterator it v.begin();//auto it v.begin();while (it ! v.end()){cout *it ;it;}cout endl; 3 范围for遍历  for (auto e : v){cout e ;}cout endl;
http://www.zqtcl.cn/news/916028/

相关文章:

  • 市场体系建设司在官方网站支付宝手机网站支付
  • dedecms 模版网站网站图标下载
  • 余姚 做网站北京南站
  • 腾讯建设网站视频视频视频中国建筑信息平台
  • 关于政务网站建设的调查问卷搜狗网页版
  • 网站开发工程师优势宁波seo网站
  • 做网站用什么编程软件php网站中水印怎么做
  • p2网站模板做视频官方网站
  • 网站建设季度考核评价工作php做网站有哪些优点
  • 设计某网站的登录和注册程序凡科建站添加文章
  • wordpress 批量打印wordpress 数据库优化
  • 购物网站开发设计类图网络架构指什么
  • 学校网站建设方法wordpress 调用用户名
  • 深圳创建网站公司哈尔滨全员核酸检测
  • 网站开发实施计划宠物网站 html模板
  • 在线生成手机网站商城网站平台怎么做
  • 深圳专业企业网站制作哪家好写作网站新手
  • 福建泉州曾明军的网站桥梁建设期刊的投稿网站
  • 国内设计网站公司wordpress电视主题下载
  • 自贡网站开发河南省建设网站首页
  • 昆明网站推广优化服务器代理
  • wordpress 网站统计插件福建省建设工程职业注册网站
  • 手机移动端网站是什么上海网站设计服务商
  • 多语言网站建设推广孝感门户网
  • 外贸soho 网站建设旅游电子商务网站建设调查问卷
  • 北京专业制作网站seo优化技术教程
  • 网站建设最低多少钱珠海在线网站制作公司
  • 网站建设完成之后要索取哪些医疗网站建设服务
  • 长沙招聘网站有哪些深圳seo论坛
  • 网站如何做网络推广山西住房建设厅官方网站