2012-02-21 3 views
0

У меня есть такая карта:быстрый способ получить все уникальные отображенные значения в станд :: Карта

std::map<time_t, int> 

Существует одно значение (целое) в день (time_t). Некоторые дни могут иметь одно и то же значение и поэтому не могут быть уникальными. Мне нужно выполнить вычисление для каждого уникального значения int из этой карты.

Какое наиболее быстрое (наименьшее использование ЦП) способ получить их?

+0

Вы можете изменить 'std :: map' на другую структуру данных? –

+0

@ LuchianGrigore, конечно, почему бы и нет. Пока я не теряю никаких данных. –

+0

@doobie: Используйте 'std :: set ' – LihO

ответ

1

У вас есть ограничения памяти? Если нет, я бы сохранил std :: set (или любой хэш-набор доступен в вашей среде), в котором перечислены уникальные целые числа.

Если вы абсолютно не можете выделить больше памяти, возможно, вам стоит рассмотреть возможность использования другой структуры данных в первую очередь.

+0

Предположим, что память не проблема. Как я буду отслеживать дни? –

+0

Сохраните свою исходную структуру данных и еще одну. Для второй структуры данных существует два варианта: (a) сохранить std :: set , который просто перечисляет значения уникальных целых чисел (если это все, что вам нужно). (b) сохранить std :: map , в котором перечислены все дни, в которые появилось заданное значение. –

+0

И всякий раз, когда вы вставляете в исходную карту, также вставляете в структуру поддерживающих данных. –