如何有效避免C++中Vector迭代器失效问题的解决方案?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1421个文字,预计阅读时间需要6分钟。
目录
一、代器失效
二、可能引起的代器失效操作
2.1、野指针引起的代器失效 2.2、代器指向的位置意义改变 2.3、总结一、代器失效
二、代器失效的主要原因及作用
主要作用是让算法无需关心底层细节。目录
- 一、迭代器失效
- 二、可能引起的迭代器失效的操作
- 2.1、野指针引起迭代器失效
- 2.2、迭代器指向的位置意义改变
- 2.3、总结
一、迭代器失效
主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装。比如:vector的迭代器就是原生态指针T*。因此迭代器失效,实际就是迭代器底层对应指针所指向的空间被销毁了,而使用一块已经被释放的空间,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃)。
二、可能引起的迭代器失效的操作
2.1、野指针引起迭代器失效
凡是涉及到扩容操作,都有可能引起迭代器失效,因为vector扩容是分配一个新的数组,然后全部元素移到新的数组中。
本文共计1421个文字,预计阅读时间需要6分钟。
目录
一、代器失效
二、可能引起的代器失效操作
2.1、野指针引起的代器失效 2.2、代器指向的位置意义改变 2.3、总结一、代器失效
二、代器失效的主要原因及作用
主要作用是让算法无需关心底层细节。目录
- 一、迭代器失效
- 二、可能引起的迭代器失效的操作
- 2.1、野指针引起迭代器失效
- 2.2、迭代器指向的位置意义改变
- 2.3、总结
一、迭代器失效
主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装。比如:vector的迭代器就是原生态指针T*。因此迭代器失效,实际就是迭代器底层对应指针所指向的空间被销毁了,而使用一块已经被释放的空间,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃)。
二、可能引起的迭代器失效的操作
2.1、野指针引起迭代器失效
凡是涉及到扩容操作,都有可能引起迭代器失效,因为vector扩容是分配一个新的数组,然后全部元素移到新的数组中。

