Показать сообщение отдельно

  #5280  
Старый 12.05.2010, 12:17
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами: 9320830

Репутация: 86
По умолчанию

Код:
#include <iostream>
#include <map>
#include <string>
#include <utility>

int main(int argc, char* argv[]) {
  std::map<std::string, std::pair<int, int> > files;
  files["0.txt"] = std::make_pair(0, 7);
  files["1.txt"] = std::make_pair(8, 41);
  files["2.txt"] = std::make_pair(42, 50);
  
  return 0;
}
Есть такая вот хеш-таблица, как максимально эффективно получить доступ к key этой таблицы имея только одну цифру, например 21.
Т.е. нужно в каждом элементе сравнивать находится ли данное число(21) среди диапазона std:air текущего элемента... и если наш (21) оказался в диапазоне какого-либо std:air, то мы возвращаем key...
Вот так я собирался делать вручную
Код:
  std::map<std::string, std::pair<int, int> >::const_iterator begin = files.begin();
  std::map<std::string, std::pair<int, int> >::const_iterator end = files.end();
  int num = 21;
  for (; begin != end; ++begin) {
    if (num >= (*begin).second.first && num <= (*begin).second.second) {
      std::cout << "Found in " + (*begin).first + "\n";
      break;
    }
  }
Хотелось бы увидеть пример с использованием stl алгоритмов, спасибо.
 
Ответить с цитированием