
12.05.2010, 12:17
|
|
Участник форума
Регистрация: 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 алгоритмов, спасибо.
|
|
|