博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

帅得不敢出门

热爱c++ 博客文章多为转载(帖子后面有带原文链接的)以做收藏 若有误处 望多多赐教
   stupidpig.cublog.cn
关于作者  
姓名:帅得不敢出门
职业:学生
年龄:22
位置:福州
C++高手群:3503799
个性介绍:新博客路过也帮推荐下谢谢

我的分类  




一个STL面试问题
vector <int> array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 3 );
for( vector <int>::size_type i=array.size()-1; i>=0; --i ) // 反向遍历array数组
{
 cout  < < array[i]  < < endl;
}
当我运行代码的时候,没有输出 3 2 1,而是输出了一大堆很大的数字,为什么?
于是我修改了代码
for(vector <int>::size_type j=array.size();j>0;j--)
{
    cout  < < "element is "  < <array[j-1] < <endl;
    }
这样就输出了 3 2 1,倒是为什么呢?
========================================
 
第一遍循环: i = 2, 输出array[2],即3
第二遍循环:  i = 1,  输出array[1],  2
第三遍循环:  i = 0, 输出array[0],  1

在第三遍循环出来时候 --i使得i变成-1,一个很大的数,就陷入循环了

 原文地址 http://topic.csdn.net/u/20080516/13/2b29b399-f8f6-49b3-ad68-3977258686ac.html
 发表于: 2008-05-16,修改于: 2008-05-16 21:18 已浏览150次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.01921

京ICP证041476号