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

vector的类型设定为pair<int, vector<int>iterator> 的有关问题 push_back以后迭代器异常

2012-04-15 
vector的类型设定为pairint, vectorint::iterator的问题 push_back以后迭代器错误类型定义如下C/C++ c

vector的类型设定为pair<int, vector<int>::iterator> 的问题 push_back以后迭代器错误
类型定义如下

C/C++ code
vector< pair<int,vector<int>::iterator> > indexIterator;


我又定义了一个vector<int> intSets

然后把vector<int> intSets
里的值和对应的vector<int>::iterator 
push_back到indexIterator里面

但是push_back以后的指针全都乱了
有的正确 有的错误
怎么会这样?

代码如下
C/C++ code
int _tmain(int argc, _TCHAR* argv[]){    vector< pair<int, vector<int>::iterator > > indexIterator;    vector<int> intSet;    for(int i=0; i< 10;i++)    {        intSet.push_back(i);        indexIterator.push_back( make_pair(1,(intSet.end()-1) ));                //是不是因为对intSet做push_back以后就已经导致了intSet里面内存的重新分配?                //虽然此时indexIterator.push_back的iterator是正确的                //但下一次的intSet.push_back(i)就有可能使得上一次indexIterator.push_back的iterator失效?    }    for(int i=0;i<indexIterator.size();i++)    {        cout << *(indexIterator[i].second)<<endl;    }    return 0;}


[解决办法]
是的。
[解决办法]
1楼的注释部分写的很正确哇
STL 用迭代器删除元素的例子有详细描述迭代器的安全用法

热点排行