我有一个非常简单的问题,但对于女巫,我找不到答案。
如何在.at(i)
的二维数组中使用vector < vector <type> >
?
我想要检查边界 - 巫婆.at(i)
函数会自动提供,但我只能使用array[i][j]
来访问我的数组,但不提供边界检查。
答案 0 :(得分:4)
使用的正确语法是:
array.at(i).at(j)
答案 1 :(得分:3)
由于.at(i)
会在vector
处返回对v[i]
的引用,请使用.at(i).at(j)
。
答案 2 :(得分:2)
使用vec.at(i).at(j)
并且必须在try-catch
块中使用此项,因为如果索引无效,at()
会抛出std::out_of_range
异常:
try
{
T & item = vec.at(i).at(j);
}
catch(const std::out_of_range & e)
{
std::cout << "either index i or j is out of range" << std::endl;
}
编辑:
正如你在评论中所说:
我实际上希望程序在发生异常时停止。 - jbssm 5分钟前
在这种情况下,您可以在打印超出范围的消息后在catch
块中重新抛出,以便您可以知道它停止的原因。以下是重新抛出的方式:
catch(const std::out_of_range & e)
{
std::cout << "either index i or j is out of range" << std::endl;
throw; //it rethrows the excetion
}