在C ++中抛出'std :: out_of_range'实例后调用终止

jsLearner

我是C ++和学习数据结构的新手。在下面的代码中,我收到“超出范围警告”,并且不明白我在做什么错。

#include <iostream>
#include <vector>
using namespace std;

int main()
{

    vector<int> numbers{100,-1,2,4,55,78,3};
    int temp {};
    int pass {};
    pass = numbers.size();
    for(int i {0} ;i<pass-1;i++){    
     for(int j {0} ; j<pass-1-i ; j++){
        if(numbers.at(j) > numbers.at(j+1)){
            temp = numbers.at(j);
            numbers.at(j)=numbers.at(j+1);
            numbers.at(j+1)=temp;
        }   
    }   
    
    }

    cout << numbers.at(0) << endl;
    cout << numbers.at(1) << endl;
    cout << numbers.at(2) << endl;
    cout << numbers.at(3) << endl;
    cout << numbers.at(4) << endl;
    cout << numbers.at(5) << endl;
    cout << numbers.at(6) << endl;
    cout << numbers.at(7) << endl;
    cout << numbers.at(8) << endl;
    
    return 0;
}
Geno C

似乎您可能不了解其std::vector工作原理。

您仅7vector其中声明了元素,这意味着您只能上到索引6这是因为std::vector的索引始于0这也是正确的std::array

vector<int> numbers{100,-1,2,4,55,78,3};

但是,在您的代码中放置了以下两个语句:

  • cout << numbers.at(7) << endl;
  • cout << numbers.at(8) << endl;

这是行不通的,因为就像我提到的那样,您只能向上索引6

您还应该考虑使用for类似于上述注释循环。它使用起来更简单,工作量也更少。

例如,一个for循环:

#include <iostream>
#include <vector>


int main()
{

    std::vector<int> numbers{ 100,-1,2,4,55,78,3 };
    int temp{};
    int pass{};
   
    pass = numbers.size();
    for (int i{ 0 }; i < pass - 1; i++) {
        for (int j{ 0 }; j < pass - 1 - i; j++) {
            if (numbers.at(j) > numbers.at(j + 1)) {
                temp = numbers.at(j);
                numbers.at(j) = numbers.at(j + 1);
                numbers.at(j + 1) = temp;
            }
        }

    }

std::cout << "v = { ";
for (int i = 0; i < numbers.size(); i++) {
    std::cout << numbers.at(i) << ", ";
}
std::cout << "}; \n";

return 0;
}

输出:

v = { -1, 2, 3, 4, 55, 78, 100, };

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

抛出'std :: out_of_range'实例后调用终止

来自分类Dev

抛出'std :: out_of_range'实例后调用终止

来自分类Dev

抛出'std :: out_of_range'what():vector :: _ M_range_check实例后终止调用

来自分类Dev

C ++中带有矢量的'std :: out_of_range'实例

来自分类Dev

比较二进制数字输入的字符时,抛出'std :: out_of_range实例后调用终止

来自分类Dev

将字母向前移动 3 个字母的程序,错误:在抛出 'std::out_of_range' 实例后调用终止

来自分类Dev

"if (argc < 2 || argc > 2)" 应该有 2 个参数吗?& 在抛出“std::out_of_range”错误实例后调用终止

来自分类Dev

C++ 合并排序实现中抛出的 std::out_of_range 异常

来自分类Dev

合并排序算法中的 C++“以未捕获的 std::out_of_range 类型异常终止:向量”错误

来自分类Dev

在抛出 std::exception 实例后调用终止

来自分类Dev

C ++向量:std :: out_of_range错误

来自分类Dev

抛出'std::bad_alloc'的实例后调用C++终止

来自分类Dev

抛出'std :: regex_error'实例后调用终止

来自分类Dev

抛出'std :: regex_error'实例后调用终止

来自分类Dev

在抛出“std::system_error”实例后调用 Tensorflow 终止

来自分类Dev

C ++ std :: out_of_range在内存位置

来自分类Dev

Microsoft C ++异常:std :: out_of_range错误?

来自分类Dev

C ++中的文件IO错误。引发'std :: length_error'what()实例后调用终止终止what():basic_string :: resize

来自分类Dev

C ++多线程:抛出“ std :: length_error”实例后终止

来自分类Dev

以类型为std :: out_of_range的未捕获异常终止终止错误

来自分类Dev

为什么在抛出'std :: bad_alloc'实例后终止调用?

来自分类Dev

抛出“std::system_error”线程池实例后调用终止

来自分类Dev

在抛出“std::regex_error”what() 实例后调用终止:括号未关闭

来自分类Dev

抛出“std::invalid_argument”实例后调用终止 what(): leetcode 问题中的 stoi 错误

来自分类Dev

C ++:未处理的异常:内存位置处的std :: out_of_range

来自分类Dev

使用gcc编译代码后,不会输出std :: out_of_range异常字符串

来自分类Dev

使用gcc编译代码后,不会输出std :: out_of_range异常字符串

来自分类Dev

Node.js错误“抛出'std :: bad_alloc'what():std :: bad_alloc实例后调用终止”

来自分类Dev

异常'out_of_range'不是std的成员?

Related 相关文章

  1. 1

    抛出'std :: out_of_range'实例后调用终止

  2. 2

    抛出'std :: out_of_range'实例后调用终止

  3. 3

    抛出'std :: out_of_range'what():vector :: _ M_range_check实例后终止调用

  4. 4

    C ++中带有矢量的'std :: out_of_range'实例

  5. 5

    比较二进制数字输入的字符时,抛出'std :: out_of_range实例后调用终止

  6. 6

    将字母向前移动 3 个字母的程序,错误:在抛出 'std::out_of_range' 实例后调用终止

  7. 7

    "if (argc < 2 || argc > 2)" 应该有 2 个参数吗?& 在抛出“std::out_of_range”错误实例后调用终止

  8. 8

    C++ 合并排序实现中抛出的 std::out_of_range 异常

  9. 9

    合并排序算法中的 C++“以未捕获的 std::out_of_range 类型异常终止:向量”错误

  10. 10

    在抛出 std::exception 实例后调用终止

  11. 11

    C ++向量:std :: out_of_range错误

  12. 12

    抛出'std::bad_alloc'的实例后调用C++终止

  13. 13

    抛出'std :: regex_error'实例后调用终止

  14. 14

    抛出'std :: regex_error'实例后调用终止

  15. 15

    在抛出“std::system_error”实例后调用 Tensorflow 终止

  16. 16

    C ++ std :: out_of_range在内存位置

  17. 17

    Microsoft C ++异常:std :: out_of_range错误?

  18. 18

    C ++中的文件IO错误。引发'std :: length_error'what()实例后调用终止终止what():basic_string :: resize

  19. 19

    C ++多线程:抛出“ std :: length_error”实例后终止

  20. 20

    以类型为std :: out_of_range的未捕获异常终止终止错误

  21. 21

    为什么在抛出'std :: bad_alloc'实例后终止调用?

  22. 22

    抛出“std::system_error”线程池实例后调用终止

  23. 23

    在抛出“std::regex_error”what() 实例后调用终止:括号未关闭

  24. 24

    抛出“std::invalid_argument”实例后调用终止 what(): leetcode 问题中的 stoi 错误

  25. 25

    C ++:未处理的异常:内存位置处的std :: out_of_range

  26. 26

    使用gcc编译代码后,不会输出std :: out_of_range异常字符串

  27. 27

    使用gcc编译代码后,不会输出std :: out_of_range异常字符串

  28. 28

    Node.js错误“抛出'std :: bad_alloc'what():std :: bad_alloc实例后调用终止”

  29. 29

    异常'out_of_range'不是std的成员?

热门标签

归档