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

帆布网站做哪个/bt磁力猫

帆布网站做哪个,bt磁力猫,wordpress首页文章只显示标题,网站快排迭代器失效问题 vector容器在插入(发生扩充)和删除的过程中可能会有迭代器失效的问题,我们在使用的时候需要注意这个问题。 先了解一下插入的时候为什么迭代器会失效 原因 在发生扩充的时候,原迭代器指向的还是原来空间的位置 上代…

迭代器失效问题

vector容器在插入(发生扩充)和删除的过程中可能会有迭代器失效的问题,我们在使用的时候需要注意这个问题。

先了解一下插入的时候为什么迭代器会失效

在这里插入图片描述

原因

在发生扩充的时候,原迭代器指向的还是原来空间的位置

上代码

/*------------------------------------------------------------------------*1.*插入时发生扩充,会新开辟一块空间,不一定和原来的空间相同,造成迭代器失效---------------------------------------------------------------------------*/vector<int> v;auto b1 = v.begin(); //0x00A9F758cout << &b1 << endl;v.push_back(1);auto b2 = v.begin(); //0x0A9F744cout << &b2 << endl;

避免

reserve的作用是更改vector的容量(capacity),使vector至少可以容纳n个元素。
如果n大于vector当前的容量,reserve会对vector进行扩容。其他情况下都不会重新分配vector的存储空间

删除的时候为什么迭代器会失效

这是因为vetor,deque使用了连续分配的内存,删除一个元素导致后面所有的元素会向前移动一个位置。

代码分析

/*----------------------------------------------------------------------------*2.* 删除时发生迭代器失效---------------------------------------------------------------------------------*/vector<int> v2{1,2,3,4};auto b3 = v2.begin();cout << &b3 << endl; //原来迭代器的位置auto b4 = v2.erase(v2.begin());//删除第二个元素/**在vs2013下陷入阻塞状态,b3迭代器已经失效*//*for (b3; b3 < v2.end(); b3++){cout << *b3 << " ";}*//**接受erase返回的指针 ,可以正常使用*/for (b4; b4 < v2.end(); b4++){cout << *b4 << " ";}cout << &b4 << endl;

解决

erase方法可以返回下一个有效的iterator。

swap函数一般用法

swap用来交换连个容器的值

void printVector(vector<int>& v) 
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {cout << *it << " ";}cout << endl;
}vector<int>v1;for (int i = 0; i < 10; i++){v1.push_back(i);} printVector(v1);vector<int>v2;for (int i = 10; i > 0; i--){v2.push_back(i);} printVector(v2);//互换容器cout << "互换后" << endl;v1.swap(v2);printVector(v1);printVector(v2);

swap函数clear()之后的内存回收

在使用clear函数之后,容器的内容被清空,但是容量还没被回收掉,借助swap构建一个临时容器与他交换实现回收空间

/** swap函数的巧用 * 用clear()无法保证内存回收。 使用swap函数*创建一个局部容器 容量为0 进行交换*/v5.clear();//内容清空了cout << v5.capacity();//但是容量还在,并没有回收掉{vector<int> tmp;tmp.swap(v5);}//使用{} 是为了将 tmp析构掉cout << v5.size() << endl;//0cout << v5.capacity() << endl;//0

swap函数把多余的容量给释放掉

比如我为了避免多次申请空间而使用reserve函数一次性申请10000个空间,但是我存了了100个元素,造成了浪费,这个时候就可以使用swap在不修改原内容的情况下把多余的容量给释放掉

	/*----------------------------------------------------------------------------*3.* 提前分配好空间,减少vector在动态扩展容量时的扩展次数---------------------------------------------------------------------------------*/vector<int> v5;//预留空间v5.reserve(100000);for (int i = 0; i < 100; i++) {v5.push_back(i);}cout << v5.size() << endl;//100 这是因为 我放了100个元素cout << v5.capacity() << endl;//100000 //容量为100000/** swap函数的巧用 * 使用swap把多余的容量给释放掉 有多少元素 就占多大的容量*/vector<int> (v5).swap(v5);cout << v5.size() << endl;//100cout << v5.capacity() << endl;//100
http://www.lbrq.cn/news/1440361.html

相关文章:

  • 昆山玉山网站建设/明天上海封控16个区
  • 武汉网站建议/青岛百度代理公司
  • 网站建设公司浙江/网络营销外包收费
  • 平邑县住房和城乡建设局网站/国外免费网站建设
  • 网站建设设计设计/免费个人网站模板
  • 网站哪家做得好/百度网页入口
  • 东营网站建设公司 网络易/微信投放广告多少钱
  • 2013我国中小企业接入互联网和网站建设情况/百度百家官网入口
  • 徐州企业免费建站/竞价排名适合百度吗
  • 做摘抄的网站/广州今日刚刚发生的新闻
  • 宁波网站制作首荐荣盛网络好/以下属于网站seo的内容是
  • 设计素材网站上的素材可以商用吗/成都高新seo
  • 公司网站建设需求书/人民日报今日新闻
  • 帝国做网站是选择静态还是伪静态/建站系统源码
  • b2b电子商务平台登录/女装标题优化关键词
  • 手机网站建设服务电话/360优化大师官方下载手机
  • 网站建设实施/能让网络非常流畅的软件
  • 温州知名网站推广/站长工具网站
  • 游戏网站上做银商为赌博人员/成都比较靠谱的seo
  • 做网站推广每天加班/站长工具官网域名查询
  • wordpress 做购物网站/百度知道灰色词代发收录
  • 男朋友说是做竞彩网站维护的/b站引流推广网站
  • 建设景区网站推文/整合营销策略
  • 亿网行网站建设/网络优化工程师有前途吗
  • 网站为什么维护/朝阳区seo搜索引擎优化怎么样
  • wordpress nextgen gallery/网站seo提升
  • wordpress响应多少才正常/兰州seo优化
  • 太原网站优化教程/百度网站首页提交入口
  • 企业网站建设 建立作用/做网站企业
  • 合肥专业网站建设/简述如何对网站进行推广
  • 使用 6 种方法将文件从 Android 无缝传输到iPad
  • 猫头虎AI分享| 智谱开源了为 RL scaling 设计的 LLM post‑training 框架用于GLM-4.5强化学习训练:slime
  • MySQL-多表查询
  • 【限时分享:Hadoop+Spark+Vue技术栈电信客服数据分析系统完整实现方案
  • 计算机网络---交换机
  • 第十六届蓝桥杯大赛青少组 C++ 省赛真题解析(2025年8月10日)