C++ 向量中节点之间的长度之和

C++ 向量中节点之间的长度之和,c++,C++,我有以下任务:我正在执行一个最便宜的插入方法的实现,并且我正在将我的副标题存储到一个向量中。构建向量后,我需要找到节点之间距离的总长度,这些距离包含在向量中(例如,我在向量中存储了0-32-41-3-45-0)。如何计算总距离?我有以下功能: double tLength = 0; for (vector<int>::iterator i=resultingRoute.begin(); i!=resultingRoute.end();i++) { tLength+= dis

我有以下任务:我正在执行一个最便宜的插入方法的实现,并且我正在将我的副标题存储到一个
向量中。构建
向量
后,我需要找到节点之间距离的总长度,这些距离包含在
向量
中(例如,我在
向量
中存储了
0-32-41-3-45-0
)。如何计算总距离?我有以下功能:

double tLength = 0;
for (vector<int>::iterator i=resultingRoute.begin(); i!=resultingRoute.end();i++)
{

    tLength+= distanceMatrix[*i][*i+1];
}
return tLength;
计算旅程长度的最佳方法是什么?谢谢

但它的计算范围是0到1,然后是32到33,41到42,以及 诸如此类

它确实是这样做的,因为
*i+1
*i
的值并向其添加
1
。您可能想编写
*(i+1)
。在这种情况下,条件
i=resultingRoute.end()
不正确,应该是
i=resultingRoute.end()-1
,否则
*(i+1)
将超出最后一个元素的范围。在进入循环之前,还应检查向量是否至少有2个元素

您可以避免使用迭代器,并像处理数组一样处理向量,而无需检查向量的大小:

for (size_t i = 0; i + 1 < resultingRoute.size(); ++i)
        tLength += distanceMatrix[resultingRoute[i]][resultingRoute[i+1]];
for(size_t i=0;i+1
resultingRoute.begin()+1
/
resultingRoute.end()-1
这是危险的,至少对于空向量是如此。
for (size_t i = 0; i + 1 < resultingRoute.size(); ++i)
        tLength += distanceMatrix[resultingRoute[i]][resultingRoute[i+1]];