从无法到达的矢量错误中恢复
Recover from an vector out of reach error
是否有可能从c++中的矢量"不可及"错误中恢复?
像这样的函数:
vector<int> numbers;
bool isAccessable(int i)
{
try
{
numbers[i];
catch (...)
{
return false;
}
return true;
}
在c#中是可能的,但c++呢?
如果您只想检查索引是否在范围内,则只需:
return i < numbers.size();
(也应该与0比较,或者将索引更改为unsigned类型;size_t
是通常用于数组索引的类型。
如果您想尝试访问该值,并在索引超出范围时抛出异常,则使用at
而不是[]
:
try {
do_something_with(numbers.at(i));
return true;
} catch (std::out_of_range const &) {
return false;
}
在c++中,对于operator[]没有范围检查,但是对于vector::at()有。
试
numbers.at(i);
。
使用std::vector::at()
成员函数。它抛出一个out_of_range
异常
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 从 Qt 中的错误中恢复
- 是否可以使用GetLastError检查错误代码是否已恢复
- 异常处理和从非致命错误中恢复
- 从无法到达的矢量错误中恢复
- 从分段错误中恢复的最佳实践
- 发生错误后,cuFFT无法恢复
- 期望可恢复的函数实际上在原始线程中恢复是错误的吗
- 如何从COM错误中正常恢复
- 野牛C++缺少分号的多个错误恢复