gpt4 book ai didi

c++ - while 循环时的问题

转载 作者:行者123 更新时间:2023-11-28 07:27:31 25 4
gpt4 key购买 nike

我有一个 vector QVector<float> dist;我在这里为我拥有的所有维度保持欧几里得距离。我保持尺寸如下:

QHash<int, QVector<float> > hash; 

在哪里int用于键,值再次保存在 QVector<float> 中.当我尝试填写 dist 时的代码如下:

for(int i = 0; i < t; i++)
{
for(int j = 1; j < t; j++)
{
while( j <= i)
j++;
dist.push_back(qPow((a[i] - hash[i].at(point)), 2) + qPow((a[j] - hash[j].at(point)), 2));
qDebug() << "Euclidean distance for Dim" << i << "and Dim" << j << " = " << dist[i];
}
}

循环按预期计算所有内容,但在 :

之后因内存错误而崩溃

ASSERT failure in QVector::at "index out of range"...

当我删除 while 时循环(计算将是错误的)应用程序不再崩溃。

最佳答案

由于 i < t 且 j 可能等于 i+1,因此在访问 a[j] 时可能会产生超出范围的错误。 IE。有时 j = t,所以你尝试访问 a[t]。它看起来不正确。

可能是正确的放置

while( j < i)

代替

while( j <= i)

关于c++ - while 循环时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466898/

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