0
我试图做一个函数,重新排列矢量的元素,如果它不是升序。我写了这个,但是当我编译它,我得到:为什么我得到std :: out_of_range错误?
抛出的一个实例“的std :: out_of_range”什么()终止后,被称为:矢量:: _ M_range_check
有人能告诉我什么是我的功能错了?谢谢。
void reorder(vector<double>& orderA)
{
for (unsigned int i = 0; i < orderAngle.size(); ++i)
{
temp = orderA.at(i);
orderA.at(i) = orderA.at(i+1);
orderA.at(i+1) = temp;
}
return;
}
我+ 1超出范围,当i = orderAngle.size() - 1,最重要的是,代码不会做它应该。你需要全面的分类功能。 – Incomputable
当你的计数器等于'大小-1'时,它将尝试获取最后一个元素和下一个不存在的元素。你的循环函数应该是'i
总是在你的函数的末尾写入'return'。如果你忘记写它,函数将永远执行。 –