void MSVehicleContainer::add(SUMOTime time, const VehicleVector& cont) { VehicleHeap::iterator j = find_if(array.begin() + 1, array.begin() + currentSize + 1, DepartFinder(time)); if (currentSize == 0 || j == array.begin() + currentSize + 1) { VehicleDepartureVector newElem(time, VehicleVector(cont)); addReplacing(newElem); } else { VehicleVector& stored = (*j).second; stored.reserve(stored.size() + cont.size()); copy(cont.begin(), cont.end(), back_inserter(stored)); } }
void MSVehicleContainer::add(SUMOVehicle* veh) { // check whether a new item shall be added or the vehicle may be // added to an existing list VehicleHeap::iterator i = find_if(array.begin() + 1, array.begin() + currentSize + 1, DepartFinder(veh->getParameter().depart)); if (currentSize == 0 || i == array.begin() + currentSize + 1) { // a new heap-item is necessary VehicleDepartureVector newElem(veh->getParameter().depart, VehicleVector()); newElem.second.push_back(veh); addReplacing(newElem); } else { // add vehicle to an existing heap-item (*i).second.push_back(veh); } }
bool MSVehicleContainer::anyWaitingFor(SUMOTime time) const { VehicleHeap::const_iterator j = find_if(array.begin() + 1, array.begin() + currentSize + 1, DepartFinder(time)); return j != array.begin() + currentSize + 1; }