调试时出现莫明其妙的错误~帮忙看看

调试时出现莫明其妙的异常~帮忙看看
程序这样的:求2的n次方~
#include   <iostream>
#include   <string>
#include   <vector>
using   namespace   std;

void   f(int   n)
{
if(n)
{
const   int   number   =   2;
vector <int>   vec(1,number);
/*   我在f函数设置了个断点,用F11单步调试,不明白为什么在这个地方出现了异常,但是翻了C++的书,这样初始化没有错啊,是调试的方法错误了,还是这里本身有问题?请各位高人指点啊~   */
int   i   =   1;
while(i   !=   n)
{
vector <int> ::iterator   iter   =   vec.begin();
for(;iter   !=   vec.end();   ++iter)
{
if((iter++)   !=   vec.end())
{
if(((*iter)   *   number)   <   10)
(*iter)   *=   number;
else
{
(*iter)   %=   10;
(*iter)++;
}
}
else
{
if(((*iter)   *   2)   <   10)
(*iter)   *=   2;
else
{
(*iter)   %=   10;
vec.push_back(1);
break;
}
}
}
i++;
}
vector <int> ::iterator   j   =   vec.end()   -   1;
while(j   !=   vec.begin())
{
cout   < <   (*j);
j--;
}
j   =   vec.begin();
cout   < <   (*j);
return;
}
cout   < <   "1\n ";
return;
}

int   main()
{
int   n;
cout   < <   "Input   the   number: ";
cin   > >   n;
cout   < <   "The   rusult   is: ";
f(n);
system( "PAUSE ");
return   0;
}

我是在VS2005下调试的,各位要是有编译器的话,就帮忙调试看看了,
看看异常是在哪出现的
谢谢~

------解决方案--------------------
vector <int> vec(1,number); // vec 中只有1个数 number(2)
int i = 1;
while(i != n)
{
vector <int> ::iterator iter = vec.begin();
for(;iter != vec.end(); ++iter)
{ {
if((iter++) != vec.end()) // iter++: iter的原值返回与vec.end()比较, !=成立
{
if(((*iter) * number) < 10) // 因为上面的iter++, iter已经到达vec.end()
// 此时iter已经无效了, 所以*iter操作非法!




------解决方案--------------------
恭喜楼主,那就散个分做善事吧。
------解决方案--------------------
恭喜+接分 嘿嘿