C++ 使用std::vector和.at()检查二维数组边界
我有一个很简单的问题,但对于巫婆我找不到答案 如何在C++ 使用std::vector和.at()检查二维数组边界,c++,vector,multidimensional-array,C++,Vector,Multidimensional Array,我有一个很简单的问题,但对于巫婆我找不到答案 如何在向量的二维数组中使用.at(I) 我想让边界检查-witch。at(I)函数自动提供,但我只能使用数组[I][j]来访问我的数组,witch不提供边界检查。使用的正确语法是: array.at(i).at(j) 要使用的正确语法是: array.at(i).at(j) 因为.at(i)将返回对向量的引用atv[i],使用.at(i).at(j)因为.at(i)将返回对向量的引用atv[i],使用.at(i).at(j)使用向量.at(i).
向量
的二维数组中使用.at(I)
我想让边界检查-witch
。at(I)
函数自动提供,但我只能使用数组[I][j]
来访问我的数组,witch不提供边界检查。使用的正确语法是:
array.at(i).at(j)
要使用的正确语法是:
array.at(i).at(j)
因为.at(i)
将返回对向量的引用atv[i]
,使用.at(i).at(j)
因为.at(i)
将返回对向量的引用atv[i]
,使用.at(i).at(j)
使用向量.at(i).at(j)
并且必须在try catch
块中使用此选项,因为at()
将在索引无效时抛出std::out\u of \u 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;
}
使用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;
}
你是对的。我一开始就试过,但犯了其他错误,没有遵守,所以我认为这就是问题所在。你是对的。我一开始就试过,但犯了其他错误,没有遵守,所以我认为这就是问题所在。你是对的。我一开始就试过,但犯了其他错误,没有编译,所以我觉得这就是问题所在。谢谢。阅读编译器错误在技巧和艺术上是同等重要的。。。祝你好运:-)你是对的。我一开始就试过,但犯了其他错误,没有编译,所以我觉得这就是问题所在。谢谢。阅读编译器错误在技巧和艺术上是同等重要的。。。祝你好运:-)谢谢。实际上,我希望程序停止,以防引发异常。在这种情况下,您可以在打印消息后在catch
块中重新刷新它超出范围,这样您就可以知道它停止的原因。在这种情况下,根本不要尝试/catch。谢谢。实际上,我希望程序停止,以防引发异常。在这种情况下,您可以在打印消息后在catch
块中重新刷新它超出范围,以便您知道它停止的原因。在这种情况下,根本不要尝试/catch。这是一个向量向量。只需将[…]
替换为.at(…)
。它还能怎么工作?它是一个向量的向量。只需将[…]
替换为.at(…)
。它还应该如何工作?