44 std::map<const ROEdge*, int> lastOccurence;
45 for (
int ii = 0; ii < (int)edges.size(); ++ii) {
46 std::map<const ROEdge*, int>::iterator it_pre = lastOccurence.find(edges[ii]);
47 if (it_pre != lastOccurence.end() &&
48 noMandatory(mandatory, edges.begin() + it_pre->second, edges.begin() + ii)) {
49 edges.erase(edges.begin() + it_pre->second, edges.begin() + ii);
52 lastOccurence[edges[ii]] = ii;
58 const RONode* start = edges[0]->getFromJunction();
60 for (
int i = 1; i < (int)edges.size(); i++) {
61 if (edges[i]->getFromJunction() == start) {
65 if (lastStart > 0 &&
noMandatory(mandatory, edges.begin(), edges.begin() + lastStart - 1)) {
66 edges.erase(edges.begin(), edges.begin() + lastStart - 1);
70 const RONode* end = edges.back()->getToJunction();
71 for (
int i = 0; i < (int)edges.size() - 1; i++) {
72 if (edges[i]->getToJunction() == end &&
noMandatory(mandatory, edges.begin() + i + 2, edges.end())) {
73 edges.erase(edges.begin() + i + 2, edges.end());
104 ConstROEdgeVector::const_iterator start,
105 ConstROEdgeVector::const_iterator end) {
106 for (
const ROEdge* m : mandatory) {
107 for (
auto it = start; it != end; it++) {