简体   繁体   English

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

[英]Debug assertion failed, C++ vector subscript out of range

I know this question has been asked before but even after looking at all the others I can't seem to figure this out. 我知道之前曾有人问过这个问题,但是即使看了所有其他问题,我似乎也无法弄清楚。 I am getting "vector subscript out of range" for the following code: 我收到以下代码的“向量下标超出范围”:

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);

As far as I can tell it is coming from the second for statement and works when I change that one to i>=1. 据我所知,它来自第二个for语句,当我将其更改为i> = 1时可以使用。 I'm able to call time_dividends[0] and dividends[0] so I can't tell why this isn't working. 我可以调用time_dividends [0]和股息[0],所以我不能说出为什么这不起作用。

The single & in &

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

is a "bitwise and" , you probably want the "logical and" && . 是一个“按位与” ,您可能想要“逻辑与” &&

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM