У меня есть такой класс:
struct Thing
{
unsigned index;
// more data members
};
Я использую std :: map
, чтобы содержать мою Thing
с. Код вызова выглядит примерно так:
Thing myThing(/*...*/);
std::map<Thing> things;
things[myThing.index] = myThing;
// ...
Thing &thing3 = things[3];
Мне было интересно, существует ли подход, который мог бы использовать Thing :: index
напрямую без необходимости неявно копировать его в pair :: first
.
Думаю, мне понадобится какой-нибудь оператор сравнения Thing
, но это нормально. std :: set
может работать, но мне понадобится целый объект Thing
в качестве ключа:
std::set<Thing> things;
Thing &thing3 = *things.find(Thing(3));
Кроме рефакторинга Thing
в std: : pair
, можно мне лучше работать с STL?