首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

迭代器失效,该怎么解决

2012-03-24 
迭代器失效往list容器里添加元素,不会导致迭代器失效吗?为什么不能通过下标来访问list内的元素,而vector和

迭代器失效
往list容器里添加元素,不会导致迭代器失效吗?
为什么不能通过下标来访问list内的元素,而vector和deque却可以

[解决办法]
list容器的殷迭代器既不支持算术运算(加法或减法),也不支持关系运算(<=,<,>=,>),它只提供前置和后置的自增、自减运算以及相等(不相等)运算
[解决办法]
std::list是一个双向链表,在某中意义上说,迭代器就是指向链表中元素的指针,添加元素不会导致迭代器失效,而是会动态的添加到链表中。
正如前面所说,list是链表,元素不是连续存储,而是通过指针链接。而vector与deque使用的是连续存储,所有元素保存在连续的内存中,就如同数组一样因此可以使用下标访问(下标访问相当于基地址+偏移量).
[解决办法]

探讨
往list容器里添加元素,不会导致迭代器失效吗?
为什么不能通过下标来访问list内的元素,而vector和deque却可以

热点排行