我知道之前已经问过这个问题,但即使在查看了所有其他问题后,我似乎无法弄明白这一点。我得到以下代码的“向量下标超出范围”:
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, ÷nds, &time_dividends);
据我所知,它来自第二个for语句,当我将其更改为i&gt; = 1时有效。我可以调用time_dividends [0]和红利[0],所以我不知道为什么这不起作用。
答案 0 :(得分:5)
中的单
&
i >= 0 & (*time_dividends)[i] > yte_forward
是“按位和”,你可能想要“逻辑和” &&
。