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

iterator 有关问题

2012-04-07 
iterator 问题int_tmain(intargc,_TCHAR*argv[]){vector intvecvec.push_back(1)vector int ::itera

iterator 问题
int   _tmain(int   argc,   _TCHAR*   argv[])
{
vector <int>   vec;
vec.push_back(1);
vector <int> ::iterator   iter=vec.begin();
vec.push_back(2);
//vector <int> ::iterator   iter=vec.begin();

cout < < "vec.begin():     " < <*iter < <endl;
iter++;
cout < < "*iter:     " < <*iter < <endl;
}
大家知道这个程序的输出结果是多少吗?改为如下形式输出又是多少呢?为什么会是这个结果阿?请高手指点一二
int   _tmain(int   argc,   _TCHAR*   argv[])
{
vector <int>   vec;
vec.push_back(1);
//vector <int> ::iterator   iter=vec.begin();
vec.push_back(2);
vector <int> ::iterator   iter=vec.begin();

cout < < "vec.begin():     " < <*iter < <endl;
iter++;
cout < < "*iter:     " < <*iter < <endl;
}




[解决办法]
第一个,程序行为未定义, 可能崩溃, 因为:
vector <int> ::iterator iter=vec.begin();
vec.push_back(2);
====>
iter已经无效了:)

[解决办法]
简短地说,vector内部是用数组存放对象的.在push_back()时有可能数组已满而重新申请空间并移动对象,造成旧begin()值不可用.
[解决办法]
try and you will know

热点排行