调试断言失败,C++矢量下标超出范围

Debug assertion failed, C++ vector subscript out of range

本文关键字:下标 范围 断言 失败 C++ 调试      更新时间:2023-10-16

我知道这个问题以前有人问过,但即使在看了所有其他问题之后,我似乎也无法弄清楚这一点。我得到以下代码的"矢量下标超出范围":

double forward_price(int number_divs, std::vector<double> *dividends, std::vector<double> *time_dividends)
{
    int i = number_divs - 1;
    for (; i >= 0 & (*time_dividends)[i] > 0.0;)
        i--;
    for (; i >= 0 & (*time_dividends)[i] > 0.0; i--)
    {
        forward_px -= (*dividends)[i]
    }
    return forward_px;
}
int number_divs = 3;
std::vector<double> dividends = { .5, .6, .58 };
std::vector<double> time_dividends = { .04, .198, .6 };
double forward_div = forward_price(3, &dividends, &time_dividends);

据我所知,它来自第二个 for 语句,当我将该语句更改为 i>=1 时有效。我可以调用time_dividends[0]和股息[0],所以我不知道为什么这不起作用。

中的单个&

i >= 0 & (*time_dividends)[i] > yte_forward

是一个"按位和",你可能想要"逻辑和"&&