terminate called after throwing an instance of 'std::out_of_range' what(): vector::_M_range_check: __n (which is 10000) >= this->size() (which is 10000)
时间: 2023-12-24 08:03:17 浏览: 66
这个错误信息是由于程序中使用了一个vector的下标,但这个下标越界了,即超出了vector的大小范围。在你的程序中,下标是10000,但是vector的大小只有10000,因此会抛出std::out_of_range异常。
要解决这个问题,你需要检查一下你的代码,看看在哪里使用了vector的下标,是否有越界的情况发生。如果有,你需要修改代码,确保使用的下标不会超出vector的大小范围。另外,也可以使用vector的at()函数来替代下标操作,这样就可以在越界时抛出异常,避免程序崩溃。
相关问题
报错terminate called after throwing an instance of 'std::out_of_range' what(): vector::_M_range_check: __n (which is 0) >= this->size() (which is 0) Aborted
这个错误是由于你在访问一个空的 vector 容器时,使用了下标操作符 [] 访问了一个不存在的元素。可能的原因是你创建了一个空的 vector 容器,然后尝试访问它的元素。
你可以在访问 vector 元素之前,先检查 vector 是否为空。例如:
```c++
std::vector<int> myVec;
if (!myVec.empty()) {
int val = myVec[0];
// do something with val
}
```
或者使用 at() 函数,它会在访问越界时抛出异常:
```c++
std::vector<int> myVec;
try {
int val = myVec.at(0);
// do something with val
} catch(const std::out_of_range& e) {
std::cerr << "Out of range error: " << e.what() << '\n';
}
```
这样,如果 vector 为空或访问越界,程序将不会崩溃,而是会抛出异常。
terminate called after throwing an instance of std::runtime_error what(): set_border
这个错误通常是由于程序中出现了无效的操作或参数导致的。具体来说,这个错误信息表示程序在执行 set_border 函数时出现了异常,可能是因为传递给该函数的参数不符合要求,或者程序内部出现了错误。
要解决这个问题,你可以检查程序中调用 set_border 函数的地方,确保传递给该函数的参数是合法的。你还可以尝试使用调试工具来追踪错误,并查看程序的调用栈,以找出错误的原因。另外,确保你的程序没有内存泄漏或其他常见的错误也是很重要的。
阅读全文