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 遍历吧。。 逆向迭代器
[解决办法]
[解决办法]
这种问题单步一下就知道了,不会单步加调试输出也可以看的出
单步调试程序是程序员的基本技能
[解决办法]
要判断下再取值