试图扫描车辆向量的插入信息,以换取C

Trying to scan a vector of vehicles an extract information for lane switching C++

本文关键字:信息 插入 扫描 向量      更新时间:2023-10-16

我正在尝试构建一个包含某些对象的模拟。我有车辆和车道。我有一台引擎,可以根据车辆的速度和加速。

bool Lane::allowedOvertake(double pos, double mindist)
{
    for (unsigned int iV = 0; iV < getNVehiclesinLane() - 1; iV++)
    {
        if ((fVehicles[iV]->getPosition() > pos - mindist)   // If inside rear safety distance.
            || fVehicles[iV]->getPosition() < pos + mindist) // If inside front safety distance.
        {}//continue
      //else {return false;}
    }
    return true;
}

我希望此for环路对车道中的所有车辆进行扫描,以便来自附近车道的车辆可以检查它是否可以进入该扫描的车道。请注意,posmindist参数是位置,而 lane寻求车辆的最小距离需要安全切换车道。另外,fVehicles是车辆的向量。如果结果为 true,则我在"主"对象(道路)中使用if语句,该语路允许进行实际的开关(使用vector.insert())。

我目前可以不考虑车辆开关车道。乍一看,我怀疑是上述函数的逻辑是不正确的。提供解决方案甚至更好的解决方案的任何帮助,都将不胜感激。

注意:我有一个车辆向量和一个车道向量。但是,车辆的位置未在矢量中订购。建议我重新设计它,以使矢量中的车辆的顺序更加重要,并且在制定代码时可以从中受益。但是,就目前而言,我想修复目前的设计。然后,我将研究重新设计模拟,以使订单更加重要。除此之外,我上面的问题仍然存在,只是以略有不同的形式。

给定一个未排序的vector,您必须检查它们是否与传递的位置相距甚远,或者换句话说,如果 关闭:

#include <algorithm>
bool Lane::allowedOvertake(double pos, double mindist)
{
    return std::none_of(
        fVehicles.begin(), fVehicles.end(), [pos, mindist] (auto & v) { 
            return v->getPosition() <= pos + mindist  
                   and  v->getPosition() >= pos - mindist;
        }
    );
}