2015-12-08 20 views
1

我书面方式它采用了矢量在Visual Studio 2012程序这是我的代码有问题的片段:不能在Visual Studio赶上“男星下标越界”异常2012

std::vector< std::vector< std::vector<Eigen::Matrix3d> > > tensor; 
//some code 
try 
    { 
     ret = tensor[x][y][z]; 
    } 
    catch(...) 
    { 
     std::cout << "Index out of range!" << std::endl; 
    } 

当x,y或z超出范围,程序终止而不是处理异常。

是VS中某些设置的问题吗?

+0

回答写作问题的唯一方法是猜测'张量'是如何定义的。 –

+0

它如何定义并不重要。问题是关于处理向量抛出的异常。说明operator []不会抛出任何异常是我需要的答案。 –

+0

恩,这很好,但是你的示例代码并没有在任何地方使用'vector',所以断言你的程序“使用vector”并不能说明问题所在。这使问题成为一个不好的问题,即使有人正确地猜出了你想要问的是什么。 –

回答

1

无论您使用的是矢量还是数组,使用数组索引操作符[]都不会在索引超出范围时引发异常。你所得到的是未定义的行为

如果你想边界检查,然后使用std::vector和它的at访问功能。