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

机顶盒视频网站建设邹平网站设计

机顶盒视频网站建设,邹平网站设计,校庆网站建设策划书范文,如何将网站排名做高一、学习资料 STL迭代器的使用 二、vector容器获取值是下标法和at()的区别 vector<int> vA; int array[]{0,1,2,3,4}; vA.assign(array,array5); cout<<vA[6]<<endl; cout<<va.at(6)<<endl;如上述代码&#xff0c;当使用vA[6]的方式出现访问越…

一、学习资料
STL迭代器的使用

二、vector容器获取值是下标法和at()的区别

vector<int> vA;
int array[]={0,1,2,3,4};
vA.assign(array,array+5);
cout<<vA[6]<<endl;
cout<<va.at(6)<<endl;

如上述代码,当使用vA[6]的方式出现访问越界时,依然能得到一个结果,而使用at(6)的方式时程序就会抛出一个数组越界的异常,所以为了及时发现程序错误,访问容器内容时推荐使用at()的方式。

三、迭代器的使用
STL中有vector/list/queue/stack等多种容器,每种容器都有特有的访问方式,这是不利于我们记忆和使用的。迭代器的出现就是为了提供一套统一的STL访问方式,提高编程的效率。
使用方法:
1.声明(以vector为例): vector<int>::iterator it; 声明一个vector类型的迭代器
2.定义:
it=vA.begin(); 让迭代器指向vA的第一个元素位置
it=vA.end(); 让迭代器指向vA的最后一个元素位置的下一个位置
【易错点注意:end()是最后一个元素位置的下一个位置(如下图)】

在这里插入图片描述
3. 获取当前迭代器对应位置的元素
迭代器可以理解为一个指针,要获取迭代器所指位置的元素,就可以像指针一样加一个解引用符*(迭代器重载了该运算符),那么想要通过迭代器输出容器中每一个元素就可以通过迭代器自增来遍历

vector<int> vA;
int array[]={0,1,2,3,4};
vA.assign(array,array+5);
vector<int>::iterator it;
for(it=vA.begin();it!=vA.end();it++){cout<<*it<<endl;
}
  1. 迭代器可以通过it=it+n来访问容器中的任意元素
it=vA.begin();
it=it+3;
cout<<*it<<endl;

四、插入和删除时迭代器失效
1.
intsert(it,p): 在当前迭代器it指向的位置插入一个元素,内部逻辑:当前位置和后面每一个元素都往后移一位,然后将要插入的值p写入当前位置。
erase(it): 删除迭代器it所指位置的元素,内部逻辑:当前位置后的每一个元素向前移动一个位置,于是当前位置元素被覆盖掉,就相当于删除了。
【注:无论是插入和删除,it指向的位置始终没变,只是相应位置的元素发生了变化】

当使用insert()函数进行容器元素插入或者使用erase()函数进行删除操作时可能导致迭代器失效!

vector<int> vA;
int array[]={0,10,22,33,40};
vA.assign(array,array+5);vector<int>::iterator it=vA.begin()+4; //此时迭代器指向的是40这个元素的位置
vA.insert(it,8);
cout<<*it<<endl;

上面这段代码就是在下标为4的位置插入一个元素8,插入之后vA内部就应该是{0,10,22,33,8,40},迭代器的位置没有发生变化,那它指向的位置就是元素8所在的位置,以上逻辑看似没什么问题,但是在有些编译器里是编译不通过的,这是为什么呢?
考虑一下vector容器的内存管理方式,vector内元素是连续存储的,当增加一个元素,而当前位置已经没有空间容纳新的元素时,就会另外开辟一段新的空间将vector整个迁移过去,并且释放掉当前占用的空间。看上述代码,it指向的那块空间可能已经释放掉了,所以再执行cout就会报错。
那么怎么解决呢?
insert()它是有返回值的,并且它返回的就是新内存空间中元素8对应的迭代器地址,所以我们只需将上述vA.insert(it,8)修改成it=vA.insert(it,8),这就表示it指向了新的内存空间中正确的位置,这个问题就解决了。
erase()函数同理,一定要接收返回值。

http://www.yayakq.cn/news/596776/

相关文章:

  • 套模版做的网站好优化吗工业和信息化部反诈中心发短信
  • 国际网站开发外贸知识最全外贸业务流程
  • 专注做动漫的门户网站中国建设部官方网站绿色建筑
  • 设计网站 站什么网wordpress默认后台路径
  • 精美的微网站怎么做 社区网站首页
  • 门户网站的营销特点多产品网站怎么做企业网站
  • 怎么查看一个网站是哪家公司做的给自己的网站做关键词流程
  • vue可以做pc端网站吗深圳市福田区香蜜湖街道
  • 网站制作公网页制作正版网站
  • 网站注册界面设计WordPress调用发邮件
  • 绍兴网站设计国家信用信息公示系统四川
  • 贵州网站备案局西宁解封最新通知
  • 网站导航大全内蒙古城乡建设和住房建设厅网站
  • wordpress搬站礼品回收网站建设
  • 无锡易时代网站建设有限公司怎么样建设征信注册中心网站
  • 北京学习网站建设全国网页设计大赛品牌榜中榜
  • 如何将自己做的网站导入淘宝南京网站设计公司排名
  • 网站选择城市怎么做公司网站可以自己做么
  • 企业网站建立要做的准备戴尔网站建设和维护
  • 福建电信网站备案天津网站制作公司电话
  • 产品外观设计网站wordpress火车头发布规则
  • 宁波网站优化找哪家金蓝盟企业管理咨询公司
  • 网站开发需要掌握哪些知识wordpress新语言
  • 个人网站做企业备案短视频seo询盘获客系统
  • 东营网站建设费用做外贸网站渠道
  • 哪家网站推广好建盏哪家好
  • 网监备案网站石家庄网站快速排名
  • 网站seo内部优化wordpress页面 中英文
  • 朝阳网站建设 慈云寺百度seo搜索营销新视角
  • APP网站怎么做大连市营商环境建设局门户网站