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

vector上标越界有关问题

2012-10-20 
vector下标越界问题代码如下:C/C++ codevectorint cc.push_back(1)c.push_back(2)c.push_back(3)for

vector下标越界问题
代码如下:

C/C++ code
        vector<int> c;    c.push_back(1);    c.push_back(2);    c.push_back(3);    for(vector<int>::size_type i = c.size()-1 ; i >= 0; i--)        cout << c[i] << endl;


上述代码是逆向输出vector中的值,虽然输出了值,但是最后下标越界了,这是什么原因呢?下标是怎么走,高手能给讲解一下吗?还有,如果正向便利vector,那么就不会下标越界,这又是为什么呢?

[解决办法]
size_t a = 3;
a - 4 = ?
[解决办法]
vector<int>::size_type类型没有负数,,,-1之后你懂的
[解决办法]
C/C++ code
 for(int i = c.size()-1 ; i >= 0; i--)
[解决办法]
size_t是无符号的
[解决办法]
size_type i = 0;
由于i为无符号数,所以i一直大于等于零,所以for循环一直执行,导致越界。
[解决办法]
无符号
[解决办法]
我是新手,如果一定要这样写的话,我不会使用“>=”,而是使用“!=”

所以,在for循环里面我会写成:
 i != 0-1
[解决办法]
C/C++ code
size_t i;//无符号整数i >= 0; //永远为真
[解决办法]
顶楼上的。。

用reverse iterator 遍历吧。。 逆向迭代器
[解决办法]
探讨
C/C++ code

size_t i;//无符号整数
i >= 0; //永远为真


死循环,,果断越界

[解决办法]
这种问题单步一下就知道了,不会单步加调试输出也可以看的出
单步调试程序是程序员的基本技能
[解决办法]
要判断下再取值

热点排行