crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> задачка с std::map :)
Алексей1153
  опции профиля:
сообщение 15.2.2011, 12:02
Сообщение #1


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Задача простая (на превый взгляд):

как наиболее быстро найти в std::map<int,int> наименьший неиспользованный ключ в диапазоне [A,B )

(B - не включено в диапазон)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
kwisp
  опции профиля:
сообщение 16.2.2011, 10:39
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Алексей1153,
Цитата(Алексей1153 @ 15.2.2011, 22:07) *
Но только я не сумел его подружить с мапом, там же value_type составной, третий аргумент никак не могу сообразить

можно так:
class mapKeyComp2: public std::binary_function<std::pair<int,int>, std::pair<int,int>, bool> { 
public:
  bool operator()(std::pair<int,int> leftSide, std::pair<int,int> rightSide) const
  {
    return leftSide.first < rightSide.first;
  }
};

.....

std::map<int,int>::iterator it19 = std::lower_bound(map_.begin(), map_.end(),
                              std::pair<int,int>(19,0), mapKeyComp2() );

думаю можно и без лишнего создания pair обойтись.

Цитата(Алексей1153 @ 15.2.2011, 22:07) *
на входе A и B - произвольные.

да это значительно усложняет задачу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Ответить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 17:18