【发布时间】:2016-05-02 13:46:28
【问题描述】:
我知道以前有人问过这个问题,但即使在查看了所有其他问题之后,我似乎也无法弄清楚这一点。我得到以下代码的“向量下标超出范围”:
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>=1 时起作用。我可以调用 time_dividends[0] 和 divides[0] 所以我不知道为什么这不起作用。
【问题讨论】:
-
另外,你为什么使用指向向量的指针,为什么你觉得有必要将它们的长度作为一个额外的参数传递?这不是 C。
-
我认为传递指针会更有效,但我可能弄错了。我最近修改了代码以使用向量而不是数组,因此传递长度是它的遗物。
-
如果你真的想要输出参数,使用引用而不是指针。对于可能很大的仅输入参数,请使用
const参考。 -
好的,谢谢,我试试