У меня мульти_индексный_контейнер, а индексный — упорядоченный_уникальный. Я знаю, что мои значения будут каким-то образом отсортированы (по умолчанию используется less). Я хочу найти точный упорядоченный индекс значения без использования какого-либо алгоритма O (n), например std::distance.
typedef multi_index_container<
MyStruct,
indexed_by<
ordered_unique<member< MyStruct, int, &MyStruct::id> >,
ordered_non_unique<member< MyStruct, int, &MyStruct::salary> >
>
> MyStructsContainer;
....
MyStructsContainer myStructsContainer;
MyStructsContainer::iterator it1 = myStructsContainer.emplace(MyStruct{ 3, 20 }).first;
MyStructsContainer::iterator it2 = myStructsContainer.emplace(MyStruct{ 1, 100 }).first;
MyStructsContainer::iterator it3 = myStructsContainer.emplace(MyStruct{ 2, 20 }).first;
Здесь it1, it2 и it3 не являются RandomAccessIts. Поэтому единственный способ найти индекс:
size_t idx = distance(myStructsContainer.begin(), it1); <--- is there any other and smarter way to find the ordered index??
assert(idx == 2);
Есть ли другой подход для этого?
Спасибо, Калин