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

时间:2016-01-26 02:57:16

标签: 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);

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

1 个答案:

答案 0 :(得分:5)

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

“按位和”,你可能想要“逻辑和” &&