gpt4 book ai didi

C++ - 通过 Boost 进行反向替换 - 错误的索引错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:31:08 26 4
gpt4 key购买 nike

我有以下用于反向替换算法的代码:

#include <boost\numeric\ublas\matrix.hpp>
typedef boost::numeric::ublas::matrix<double> dM;
dM bSub(dM A, dM b)
{
unsigned int n = (int)b.size1();
assert(b.size2() == 1);
assert(n == A.size1());
dM x(n, 1);
for (unsigned i = (n - 1); i >= 0; --i)
{
double sum = 0.0;
for (unsigned j = (n - 1); j > i; --j)
{
sum += A(i, j)*x(j, 0);
}
x(i, 0) = (b(i, 0) - sum) / A(i, i);
}

return x;
}

当我尝试运行它时弹出一个错误的索引错误。我不太确定错误在哪里,因为我在手动执行算法时找不到问题。

我也试过增加嵌套循环:for(unsigned j = 0; j < n; ++j) .同样,我遇到了同样的错误索引错误。

根据调试器,我认为问题与 i 有关不知何故取值为 4294967295,我不确定该数字可能来自何处,因为它并不适合我代码的其他部分。

最后,我还写了一个前向替换算法,使用非常相似的结构,运行没有问题。

有人知道发生了什么事吗?

最佳答案

条件 i>=0 对于 iunsigned 类型总是为真。

如果您编译时带有警告(-Wall -Wextra -pedantic 在您的 GCC/Clang 上),那么编译器会告诉您这一点。

关于C++ - 通过 Boost 进行反向替换 - 错误的索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902407/

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