我想遍历相反方向的向量值.如您所知,向量的大小为size_t.当我使用以下代码时:
for(size_t r=m.size()-1; r >= 0; r--)
{
x[r] = f[r];
for(size_t c = r+1; c < m.size(); c++)
{
x[r] -= m[r][c] * x[c];
}
}
Run Code Online (Sandbox Code Playgroud)
我将超出向量的范围,因为在递减r = 0之后r将变为4294967295.
我没有改变r的类型,因为在我的项目中,我将警告视为错误,因此它应该是size_t或者我应该将它转换为不感兴趣的.
如果您确实想要size_t用于索引,则可以按如下方式制定循环.
for(size_t r = m.size(); r > 0; r--)
{
x[r-1] = f[r-1];
for(size_t c = r; c < m.size(); c++)
{
x[r-1] -= m[r-1][c] * x[c];
}
}
Run Code Online (Sandbox Code Playgroud)
基本上你会迭代m.size()到1并通过在循环内移动来补偿; 但这个解决方案可能有点难以理解.在这个问题中,提出的解决方案是使用a reverse_iterator,它可以被视为索引的合适抽象.整个主题在这个问题中得到了更深入的介绍.
| 归档时间: |
|
| 查看次数: |
447 次 |
| 最近记录: |