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

C++ 迭代器失效问题

假设cont是一个Container 的示例,里面包含数个元素,那么当CONTAINER为:
 1.vector 2.list 3.deque 会导致下面的代码片段崩溃的Container 类型是( )

int main()

{
	Container cont = { 1, 2, 3, 4, 5};
	Container::iterator iter, tempIt;
	for (iter = cont.begin(); iter != cont.end();)
	{
		tempIt = iter;
		++iter;
		cont.erase(tempIt);
	}
}

        底层实现vector、deque底层都是用了连续空间,所以虽然++iter迭代器了,但是erase(tempit)以后底层是连续空间,删除会挪动数据,最终导致iter意义变了,已失效了。

而list,不是连续空间,删除以后tempIt虽然失效了,但是不影响iter

        因此答案为1 3


http://www.kler.cn/a/515941.html

相关文章:

  • 电子应用设计方案102:智能家庭AI鱼缸系统设计
  • [STM32 HAL库]串口中断编程思路
  • 解决leetcode第3418题机器人可以获得的最大金币数
  • Ubuntu如何安装redis服务?
  • Java Web开发高级——单元测试与集成测试
  • 第五篇 vue3 ref 与 reactive 对比
  • 分布式微服务系统架构第87集:kafka
  • WPA_cli P2P命令详解及使用
  • 细说机器学习算法之过拟合与欠拟合
  • 基于Qt中的QAxObject实现指定表格合并数据进行word表格的合并
  • 安装成功:VMwarePro17虚拟机安装MacOS13苹果系统和安装VMware TooLS详细教程
  • Sql Server数据库远程连接访问配置
  • 测试在项目过程中,经常会遇到什么问题?如何解决
  • 01-硬件入门学习/嵌入式教程-CH340C使用教程
  • 2025年第三届智能制造与自动化前沿国际会议 | Ei、Scopus双检索
  • 爬取NBA球员信息并可视化小白入门
  • AI应用、轻量云、虚拟化|云轴科技ZStack参编金融行标与报告
  • HTML-拓展知识 字符实体与URL地址
  • 国产低功耗带LCD驱动和触摸按键功能的MCU
  • ToDesk云电脑安全性探秘,如何确保数据安全无忧?
  • QT之CMAKE教程
  • docker的前世今生
  • 数据结构初阶之双向链表的介绍与双向链表的实现
  • SpringAI 之AI 模型输出与 POJO 映射
  • 数据分析 six库
  • 步入响应式编程篇(二)之Reactor API