Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3878904
  • 博文数量: 356
  • 博客积分: 10458
  • 博客等级: 上将
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 14:59
文章分类

全部博文(356)

文章存档

2020年(17)

2019年(9)

2018年(26)

2017年(5)

2016年(11)

2015年(20)

2014年(2)

2013年(17)

2012年(15)

2011年(4)

2010年(7)

2009年(14)

2008年(209)

分类: C/C++

2008-05-16 21:18:38

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

在第三遍循环出来时候 --i使得i变成-1,一个很大的数,就陷入循环了
阅读(3239) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-11-18 07:24:28

i>=0; 是错的。应该是i!=array.begin() 吧。

chinaunix网友2009-11-18 07:24:27

i>=0; 是错的。应该是i!=array.begin() 吧。

chinaunix网友2009-06-13 10:00:28

size_type 是无符号类型 y永远不会是负数。。。。你换int就OK了。 或你的第二种写法,,==0的时候退出。。

chinaunix网友2009-05-09 10:34:52

改为for(vector ::size_type i=array.size();i>0;--i){cout<

cuteorange2009-04-13 19:10:49

vector::size_type 是无符号类型,j--操作之后永远非负,故第一种写法是一个dead loop