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

【求教】关于vector的迭代器解决方案

2013-03-16 
【求教】关于vector的迭代器我写了一个二叉树分层遍历的程序,在用到迭代器的情况下报错,试了几种方法都不行,

【求教】关于vector的迭代器
我写了一个二叉树分层遍历的程序,在用到迭代器的情况下报错,试了几种方法都不行,按照C++ primer和c++程序设计语言上的规定来说是对的呀,求大大们不吝赐教,上代码:



而我用下标访问却没问题:
                            
[解决办法]
你看了stl的push_back的源代码就会了解.
当push_back第一个元素(vector中为空)时,分配一个空间,然后拷贝push_back进来元素.
当push_back第二个元素时,首先分配两个空间然后,将原来第一个元素拷贝过来,再将新push_back的元素拷贝进来,最后析构原来的第一个元素的空间.
当push_back第三个元素....依次类推.

从你的代码看,执行到这的时候,push_back了第二元素.
if((*m_current)->lchild)
                nodeVec.push_back((**m_current).lchild);

依据上面的规则,m_current所指向的那个内存空间已经被析构了,你依然用原来的m_current所指向的那个内存地址去访问,肯定会崩溃的.


热点排行