|
5 / 5 / 0
Регистрация: 24.08.2011
Сообщений: 191
|
|||||||||||
Оптимизировать написание кода при string => enum18.09.2015, 18:28. Показов 1529. Ответов 13
Метки нет (Все метки)
Есть некий класс, в котором:
map<string, clip*> не предлагать - убивает нафиг всю оптимизацию
0
|
|||||||||||
| 18.09.2015, 18:28 | |
|
Ответы с готовыми решениями:
13
Написание кода для кнопки при нажатом checkbox
Преоброзование из Enum в string |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 18.09.2015, 18:41 | |
|
map<string, int>
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.09.2015, 18:44 | ||
Сообщение было отмечено DrOffset как решение
Решение
2
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 18.09.2015, 19:42 | |||||||
ну и где логика?
0
|
|||||||
|
5 / 5 / 0
Регистрация: 24.08.2011
Сообщений: 191
|
|
| 19.09.2015, 07:18 [ТС] | |
|
nmcf, если использовать map<string, int>, то, получается, в классе будет одна мапа, которая используется только при создании объекта. Не думаю, что держать неиспользуемую переменную всё существование класса будет хорошим решением.
hoggy, мда. Ну, логика в том, что это копирование строк производится единожды, при создании объекта. А очень долгий поиск по строковой мапе производится раз 60 в секунду для каждого объекта. Так что такой вариант слишком медленный. Renji, про unordered_map посмотрю. Но нет все-таки способа узнать enum? Видел вот такую тему: Привести string к enum Но там узнается enum-элемент по индексу. А мне нужно по названию...
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||
| 19.09.2015, 08:35 | ||
|
Я, похоже, не понял, что ты хочешь. Вопрос был об упрощении if-else, так? Тогда какое отношение это имеет к созданию объектов?
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 19.09.2015, 10:51 | |||
|
на каждый ключ. что не есть хорошо. потому что операция выделения памяти - очень медленная. это не считая копирования буковок. вопрос лишь в том: что именно нужно искать. можно оптимизировать, если использовать в качестве ключей не сами строки, а их числовые хэши. если возможные ключи известны заранее, то можно приготовить хэши времени компиляции. если порядок следования ключей в контейнере не важен, то можно задействовать std::unordered_ptr<хэш, значение>
1
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 19.09.2015, 13:51 | |
|
1
|
|
| 19.09.2015, 14:50 | |
|
Почему бы не сделать отдельный класс state, содержащий в себе целочисленное значение и строковый литерал (и прочую ботву типа описания). И объявить глобально какой-нибудь контейнер, который будет хранить все доступные state и производить поиск и приведение string/char* к целочисленному виду? Заодно все строки будут в одном экземпляре. Тогда можно будет использовать switch, а не кучу if городить.
1
|
|
|
5 / 5 / 0
Регистрация: 24.08.2011
Сообщений: 191
|
||
| 21.09.2015, 08:14 [ТС] | ||
|
nmcf, ну упрощение if-else производится в конкретном контексте с определенными условиями. А создание объектов тут при том, что:
Renji, о, господи! Как я не догадался)) Спасибо, если с enum-ами в конце концов не получится, то сделаю статик мап. Enno, зачем свитч? С вашим вариантом всё будет ок и функция InitClip будет в одну строчку. Только вот каждый раз обращаться к отдельному классу... Лучше уж строковые мапы. gazlan, ох, придется, чувствую, попотеть, чтоб допереть, как это реализовывается.. Но, судя по описанию, это то, что нужно. Спасибо =)
0
|
||
| 21.09.2015, 09:56 | |
|
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 21.09.2015, 10:06 | |||
|
нравится вам без всякой причины зазря делать копии объектов - делайте.
0
|
|||
| 21.09.2015, 10:06 | |
|
Помогаю со студенческими работами здесь
14
написание кода движения 1го обьекта внутри другого при помоши клавиш При создании enum 'имя1' class 'имя2' ошибка use of enum 'имя1' without previous declaration
Вывод Enum в метод String Получение строки из R.string в коде enum Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|