是否可以通过传递结构的一个属性来使用函数"找到一组结构的"?
结构和运算符<定义如下:
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来实现此功能? 有人可以帮帮我吗?
答案 0 :(得分:0)
你想要的是不可能的。要么遍历从begin()
到end()
的所有集合元素,要么使用第二个容器unordered_map<int>
。
未声明BTW ARCO_TEMPO::orderAux
和PATH::find
。