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)
将返回对
向量的引用
at
v[i]
,使用
.at(i).at(j)
因为
.at(i)
将返回对
向量的引用
at
v[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(…)
。它还应该如何工作?