当前位置:   article > 正文

C++ vector使用的坑_c++ vector 坑

c++ vector 坑

反向遍历vector时for循环永远无法结束的坑,错误写法


void test_vector()
{
    vector<int>array{1,2,3};
    for(vector<int>::size_type i=array.size()-1;i>=0;--i)
    {
        qDebug()<<i<<"  :  "<<array[i];
        Sleep(1500);
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

代码运行起来的结果如下
在这里插入图片描述
这是因为vector::size_type是一个unsigned int,无符号的整数是>=0的,所以上面的循环条件永远为true。程序一直循环,产生随机数,直至崩溃。
正确的写法:

void test_vector()
{
    vector<int>array{1,2,3};
 
    for(vector<int>::size_type i=array.size();i>0;--i)
    {
        qDebug()<<i-1<<"  :  "<<array[i-1];
        Sleep(1500);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/390829
推荐阅读
相关标签
  

闽ICP备14008679号