在抛出"std::out_of_range"实例后终止调用
terminate called after throwing an instance of 'std::out_of_range'
为什么会发生这种情况,我的程序说它没有错误,但是当我运行它时,我在抛出"std::out_of_range"的实例后被终止调用 what(): vector:_M_range_check. 我是c ++的新手,所以我不明白这些错误
#include <vector>
#include <iostream>
#include <random>
#include <time.h>
using namespace std;
using std::vector;
int main()
{
vector<int> deck;
vector<int> nums;
default_random_engine eng(time(0));
uniform_int_distribution<int> dis(0, 51);
int pos1;
int pos2;
int num1;
int num2;
int i;
int n;
int m;
for (i = 0; i < 52; i++)
{
nums.push_back(i);
}
for(int j = 0; j < 52; j++)
{
cout << nums.at(i) << "n";
}
for(n = 0; n < 50; n++)
{
pos1 = dis(eng);
pos2 = dis(eng);
cout << pos1 << "n" << pos2 << "n";
num1 = deck.at(pos1);
num2 = deck.at(pos2);
}
}
在我看来,这似乎是由于拼写错误造成的,您应该在第二个循环中使用变量"j"。在第一个循环之后,
for (i = 0; i < 52; i++)
{
nums.push_back(i);
}
变量 'i' 包含值 52,因此调用 nums.at(i) 听起来会抛出 std::out_of_range,因为 nums 只包含 52 个值,从索引 0 开始。
for(int j = 0; j < 52; j++)
{
cout << nums.at(i) << "n";
}
通过将 at() 的参数替换为"j"来修复它,我认为这是最初的意图:
for(int j = 0; j < 52; j++)
{
cout << nums.at(j) << "n";
}
您可以在此处访问deck
中的元素:
num1 = deck.at(pos1);
num2 = deck.at(pos2);
但它是空的。在拨打这些电话之前,您必须在某个时候填写它。您可以使用 std::vector::empty
方法检查向量是否为空,并使用 std::vector::size
获取它的大小。有关这两种方法的详细信息,请参阅此std::vector
参考。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- 对象实例化调用构造函数的次数太多
- 如果 std::vector::clear() 不是静态的,如何在没有实例的情况下调用它?
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- C++中的单例实现在调用 getInstance 函数时不会产生相同的类实例
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- 从基类实例调用派生类方法而不进行强制转换
- 以下代码如何工作以每次为唯一调用堆栈唯一实例化模板函数?
- 在字符串函数中抛出'char const*'实例后调用的终止
- 如何使用 c++ 从另一个 cpp 文件中的 main.cpp 调用实例化类
- 统一功能使用模板专业化和接口来调用实例和原始类型
- 调用实例化函数时发生链接器错误
- 正在销毁调用实例
- 为什么我可以静态地调用实例函数