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]];