У меня есть ситуация, когда у меня есть контейнер, который должен содержать идентификатор (уникальные идентификаторы) и значение данных. Мне также нужно сохранить эти идентификаторы в порядке. Кортеж этих переменных будет проверяться идентификатором, но затем обрабатывается до найденного элемента, то есть я не всегда хочу обрабатывать весь контейнер. Для этого у меня есть простое решениеC++: Быстрая структура с двумя связанными ключами
// ordinal, { ID, data }
std::map<int64, pair<int64, data_t> >
Какой я первый поиска ID перебирая и сравнивая значение поиска с первым полем пары, давая мне итератор ходить до, то я обработаю все элементы до этой позиции. Есть ли лучший способ сделать это (по моему счету это O (2n))?
вы можете использовать зЬй :: Карта вместо станд :: пары который затем дает вам быстрый поиск, но будет тратить память. –
Оба лимита 'int64' показывают здесь идентификатор? Поиск в «карте» равен O (log n), а не O (n). –
Первый ординал, второй (в паре) - это идентификатор. В рамках этой схемы я не занимаюсь поиском, просто повторяя ее дважды. Мне передают идентификатор, из этого мне нужно найти порядковый номер процесса в порядке до и включая этот порядковый номер – Madden