gpt4 book ai didi

c++ - forward_list 迭代器不兼容

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:22 25 4
gpt4 key购买 nike

我正在尝试完成一个在给定 x 值时计算多项式的程序。多项式使用 STL 的 forward_list 存储在类的对象中。

class PolyTerm {
private:
int _order = 0;
double _coeff = 0.0;
public:
PolyTerm() = default;
PolyTerm(int order, double coefficient) : _order(order), _coeff(coefficient) {}

void setOrder(int order) { _order = order; }
void setCoeff(double coeff) { _coeff = coeff; }

int getOrder() const { return _order; }
double getCoeff() const { return _coeff; }
};

我获取对象和 x 值的函数如下所示:

double evaluate(const forward_list<PolyTerm>& terms, double x) {
double answer = 0;
forward_list<PolyTerm>::iterator it;
while (it != terms.end()) {
answer += it->getCoeff() * pow(x, it->getOrder());
it++;
}
return answer;
}

我的编译器没有显示任何错误,但是一旦我尝试运行该程序,我就会收到一个弹出窗口,提示“调试断言失败!”与表达式:forward_list 迭代器不兼容 Image of pop-up我很确定我将迭代器声明为与包含多项式的列表相同的类型,所以我不确定为什么会收到此错误。

谁能给我解释一下这是怎么回事?在此先感谢您的帮助。

最佳答案

forward_list<PolyTerm>::iterator it;它没有初始化。它必须用前向列表的第一个元素初始化。

forward_list<PolyTerm>::iterator it = terms.begin();

你可以简化你的循环,你不会使用 it

for (const auto& term : terms)
answer += term.getCoeff() * pow(x, term.getOrder());

关于c++ - forward_list 迭代器不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com