| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как реализовать правильней? |
| Автор: andrew_121 20.6.2009, 18:56 | ||||||
| Ситуация следующая. Есть набор строк.
Есть расширение файла в виде строки. По расширению нужно определить тип файла. Это можно сделать при помощи функций.
Но как-то нелепо Нужно чтоб функция:
возвращала тип файла. Предложите что нить более правильное. Спасибо! Добавлено @ 18:57 П.С. Не знаю куда отнести .def файл. Дополните пожалуйста расширения файлов. Если что-то пропустил. |
| Автор: zim22 20.6.2009, 19:21 | ||||
ассоциативный массив не хотите завести?
*** только имейте ввиду, что эта строчка
будет выполняться весьма специфически т.е. если "lib" будет найдено - вернётся его значение. если не найдено - ключ lib создастся со значением по умолчанию для типа eType так что более правильно через функцию map::count проверять есть ли элемент в map или нет ;) |
| Автор: andrew_121 20.6.2009, 19:27 |
Т.е. Все категории запихнуть в один массив? Вариант! |
| Автор: Любитель 21.6.2009, 11:31 | ||
Зачем count?! find - вернёт итератор для найденного элемента. Если он неравен myMap.end() - разыменовываем его и возвращаем, если равен - возвращаем какое-нибудь значение для неизвестного типа файла. |
| Автор: zim22 21.6.2009, 11:44 | ||
http://www.cplusplus.com/reference/stl/map/count/ Complexity: Logarithmic in size. http://www.cplusplus.com/reference/algorithm/find/ Complexity: At most, performs as many comparisons as the number of elements in the range [first,last). *** ааа, понял! вы наверное имели ввиду не std::find из <algorithm>, а std::map::find тогда да, согласен standard:
|
| Автор: azesmcar 21.6.2009, 12:00 |
| zim22 А зачем сравнивать std::map::count и std::find? Это не честно std::find - универсальный алгоритм, он работает на всех, STL совместимых контейнерах, но...универсальные алгоритмы не рекомендуется использовать на тех контейнерах, которые имеют свою собственную реализацию. Алгоритм find не может знать ничего он внутренней структуре map и потому ищет линейно. |
| Автор: Любитель 21.6.2009, 12:19 | ||
Естественно. ТЫ предлагаешь count, а затем ещё и индексатор. В плане производительности - один find (для бинарного дерева - с логарифмической сложностью само собой) будет лучше |