在检查矢量大小时,我得到:'表达式:矢量下标超出范围'

时间:2014-05-18 23:20:43

标签: c++ visual-studio-2012 vector

我的功能是从双精度矢量(代表多项式)生成多项式矢量(双精度矢量矢量)。然后,我在其他函数中使用此函数,它看起来像这样:

vector < vector <double> > lancuch_sturma ( vector <double> wielomian ) 
{
        /* some code here */
}

接下来我有使用lancuch_sturma的功能:

unsigned int ilosc_zmian_znaku (double x, vector < vector <double> > lancuch_sturma)
{
    if (lancuch_sturma.size() == 0)
        return 0;
    else 
    {
        /* some code here */
    }   
}

之后我在main() vector <double> wielomian填充了双打。当我尝试使用它时:

unsigned int test = ilosc_zmian_znaku (-2, lancuch_sturma(wielomian));

我熟悉错误:

  
     

Microsoft Visual C ++运行时库

     

Debug Assertion失败!

     

程序:C:\ Windows \ system32 \ MSVCP110D.dll文件:c:\ program files   (x86)\ microsoft visual studio 11.0 \ vc \ include \ vector Line:1140

     

表达式:向量下标超出范围

     

有关程序如何导致断言失败的信息,   请参阅关于断言的Visual C ++文档。

     

(按“重试”调试应用程序)

我在ilosc_zmian_znaku中遇到此错误,位于if (lancuch_sturma.size() == 0)所在的行,但我不知道可能会出现什么错误。我在那里放了断点,我的lancuch_sturmasize=7。确切地说:

-       lancuch_sturma  { size=7 }  std::vector<std::vector<double,std::allocator<double> >,std::allocator<std::vector<double,std::allocator<double> > > >

如果lancuch_sturmasize=7,那么为什么我在检查此尺寸是==0时会出错?

0 个答案:

没有答案