使用函数"在一组结构中找到",只传递结构的一个属性?

时间:2018-03-19 00:36:53

标签: c++ struct find set

是否可以通过传递结构的一个属性来使用函数"找到一组结构的"?

结构和运算符<定义如下:

struct ARCO_TEMPO {
    Arco a;
    int slotTimeU; // momento que sai do vertice u do arco
    int slotTimeV; // momento que chega no vertice v do arco
    int order;
    ARCO_TEMPO () {};
    ARCO_TEMPO (const ARCO_TEMPO& obj): a(obj.a), slotTimeU(obj.slotTimeU), slotTimeV(obj.slotTimeV), order(obj.order) {};
    ARCO_TEMPO (Arco _a, int _slotTimeU, int _slotTimeV, int _order) : a(_a), slotTimeU(_slotTimeU), slotTimeV(_slotTimeV), order(_order) {}    

};

struct PATH {

    set<ARCO_TEMPO> rota;
    float COST;

};

bool operator<(const ARCO_TEMPO& obj1, const ARCO_TEMPO& obj2) {
    if (obj1.slotTimeU < obj2.slotTimeU) {
        return true;
    }
    else {
        if (obj1.slotTimeU == obj2.slotTimeU && obj1.slotTimeV < obj2.slotTimeV) {
            return true;
        }
        else {
            if (obj1.slotTimeU == obj2.slotTimeU && obj1.slotTimeV == obj2.slotTimeV && obj1.a.i < obj2.a.i) {
                return true;
            }
            else {
                if (obj1.slotTimeU == obj2.slotTimeU && obj1.slotTimeV == obj2.slotTimeV &&obj1.a.i == obj2.a.i && obj1.a.j < obj2.a.j ) {
                    return true;
                }
                else{ 
                    return false;
                }
            }
        }

bool operator<(const PATH& obj1, const PATH& obj2) {
    if (obj1.COST < obj2.COST) {
        return true;
    }
    else {
        if (obj1.COST == obj2.COST && obj1.rota < obj2.rota) {
            return true;
        }
        else{ 
            return false;
        }
    }
}

我有一个变量PATH,称为aux_p。然后我有这个PATH(aux_p.rota)的属性rota。我想找到&#34;位置&#34;在set rota(aux_p.rota)中,属性顺序等于特定值。

我尝试了以下几行,但它不起作用:

set<ARCO_TEMPO>::iterator it;
int orderAux = aux_p.rota.size();
it = aux_p.find(it->orderAux)

如何使用第二个容器unordered_map来实现此功能? 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

你想要的是不可能的。要么遍历从begin()end()的所有集合元素,要么使用第二个容器unordered_map<int>

未声明BTW ARCO_TEMPO::orderAuxPATH::find