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

Bob*_*tal 0 c++ vector

我知道之前已经问过这个问题,但即使在查看了所有其他问题后,我似乎无法弄明白这一点.我得到以下代码的"向量下标超出范围":

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);
Run Code Online (Sandbox Code Playgroud)

据我所知,它来自第二个for语句,并且在我将其更改为i> = 1时有效.我可以调用time_dividends [0]和红利[0]所以我不知道为什么这不起作用.

Bau*_*gen 5

&

i >= 0 & (*time_dividends)[i] > yte_forward
Run Code Online (Sandbox Code Playgroud)

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