|
33 / 25 / 8
Регистрация: 18.12.2022
Сообщений: 83
|
||||||||||||||||
Сравнение символов со строкой14.02.2023, 21:40. Показов 1553. Ответов 31
Всем читающим привет
![]() Я делаю проект(оптимизатор кода) свой и столкнулся с проблемой перебора символов в строках и последующим сравнением, т.е.: Т.е. есть у меня такой вектор
Вот мой глючный пример: Под RegName любой 64-ех битный регистр, т.е. RAXx1 и т.д., далее там у меня зависимости от [Φ, которые будут идти от моего IR кода ,но я сомневаюсь, что эта информация будет полезна, что важно - как я могу сравнить это: ImmOfStack_CustomConst_1(RDIx8)(ζ)[Φ1] с этим RDIx8?
https://ibb.co/GCrLF9n Как я понимаю выводится дичь выше из-за того, что тут(CharRegName) тоже всё идет по символам и когда находится буква I в RDIx8, то оно видит начало той переменной Imm и сразу выводит RDIx8. Как я могу в векторе по символьным поиском по всем элементам искать нужные мне элементы? Т.е. в реальном примере будет так: ImmOfTextSection(RAXx8)(ζ)[Φ1] ImmOfStack_CustomConst_1(RDIx8)(ζ)[Φ1] и я соответственно передаю туда RegName, чтобы найти от чего идет моя переменная от регистра RAX или RDI или R15 ζ - это показывает, что регистр сохранен в стеке.
0
|
||||||||||||||||
| 14.02.2023, 21:40 | |
|
Ответы с готовыми решениями:
31
Cтрока: вывести в файл все возможные сочетания символов начиная с A, и заканчивая строкой в 16 символов состоящую из Z
Сравнение хеша md5 с строкой |
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,104
|
|||
| 14.02.2023, 22:08 | |||
Сообщение было отмечено OSPFv3 как решение
Решение-------------- вектор можно хранить в отсортированном виде и искать строку при помощи std::binary_search или ещё можно использовать std::set<std::string> вместо вектора. Там само всё сортироваться будет, поиск будет быстрыйДобавлено через 2 минуты (set будет побольше памяти жрать)
1
|
|||
|
33 / 25 / 8
Регистрация: 18.12.2022
Сообщений: 83
|
|||
| 14.02.2023, 22:15 [ТС] | |||
![]() Мне переменные нужно возвращать как структуру и работать с нею, так как там есть параллельный вектор со значениями этих переменных, если хотите и у вас есть время могу скинуть полный код на pastebin, сможете посмотреть? Могу я увидеть пример с использованием std::binary_search?, заодно посмотрю на ваш код, пойму как писать нужно, я же тут не для того, чтобы курсовую сделать ![]() Добавлено через 3 минуты
0
|
|||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,104
|
||||
| 14.02.2023, 22:18 | ||||
Сообщение было отмечено OSPFv3 как решение
Решение1) std::map<std::string,mystruct>//проще в использовании 2) std::vector<std:: pair<std::string,mystruct>>//меньше жрёт памяти ![]() Добавлено через 1 минуту для поддержания вектора в отсортированном виде - место вставки нужно искать std::lower_bound
1
|
||||
|
33 / 25 / 8
Регистрация: 18.12.2022
Сообщений: 83
|
|||||||||||
| 15.02.2023, 01:22 [ТС] | |||||||||||
![]()
![]()
Добавлено через 2 часа 54 минуты Т.е. сам std::binary_search не позволяет даже функцию в себе вызвать
air...
0
|
|||||||||||
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,034
|
||||||
| 15.02.2023, 04:02 | ||||||
|
Я конечно в плюсах баран....
1
|
||||||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||||||||||||
| 15.02.2023, 07:34 | ||||||||||||
|
Вот это все
1
|
||||||||||||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,104
|
||
| 15.02.2023, 07:43 | ||
|
Добавлено через 2 минуты вообще, чтобы облегчить отладку, можно для начала оформить в виде std::map<std::string,mystruct>а потом сделать свою реализацию мапы на основе вектора
1
|
||
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,034
|
||||||
| 15.02.2023, 13:25 | ||||||
|
Где то я такое уже видел.
Вспомнил C++ Builder6... Там правда поочевиднее. Меньше крючков, скобочек разных... Есть ещё C++Cli... Я вообще сторонник низкого уровня. Выше vector не лезу... Добавлено через 8 минут Но vector мне нравиться. Как начинаешь грузить в двумерные массивы , да с realloc. Глючно, муторно очень... Добавлено через 3 минуты
1
|
||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 15.02.2023, 13:45 | ||
|
Алексей1153, объясни мне чего хочет автор темы, какая стоит задача ? Поиск подстроки, или же парсер лексем ? Может и ТС ответить, но судя по его стилю описания, я все равно ничего не пойму.
1
|
||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,104
|
||
| 15.02.2023, 13:50 | ||
Только сразу увидел некоторые очевидные ошибки
1
|
||
|
33 / 25 / 8
Регистрация: 18.12.2022
Сообщений: 83
|
||||||||||||||||||||
| 15.02.2023, 18:17 [ТС] | ||||||||||||||||||||
|
Такс, я проснулся
![]() Я сегодня где-то в 5 часов утра понял как это сделать: https://ibb.co/TvBZMHM
![]()
((https://pastebin.com/zwH6YFrL[/url])), сейчас делаю на полукомпиляторных, суть того, что в этом коде(ниже ASM код) я ищу зависимости и исследую состояния
std::find и std::lower_bound возвращает первый элемент, который соответствует условию, а вдруг там таких элементов около 4 штук и нужно находить все 4 штуки и возвращать итератор на все 4 штуки? То, что делать в таком случае? Есть какой-нибудь std::find_next?
Так что я возможно больший сторонник низкого уровня, чем вы, но опять же стоит конкретная задача - не говнокодить и сделать всё красиво и быстро, я это пытаюсь сделать настолько, насколько позволяют мои знания!
Лексер же генерирует токены для синтаксического анализатора, у меня же тут нету даже одного слова про упоминание токенов, я упоминал IR код, сейчас покажу: https://mega.nz/file/LpEHwB4T#... -tYlXhnrVY Мы берем под пример переведенную на русский язык книгу дракона, конкретное издание - 2-ое aka purple dragon Открываем 155 страницу 3-ий главы и читаем её. То, что я имел ввиду - 443 - 705 страница, т.е. читаем 6-ую главу, а также всё до 9-ой, там будет как раз рассказывать про то, что идет тема, а именно IR код и превращение кода в трехадресный вид, а именно 450 страница глава 6.2, но это не суть, если вы знаете, что такое лексер, то я думаю, что вы меня уже поняли, я эту информацию написал для того, чтобы вы меня смогли лучше понять, я не говорю, что вы чего-то не знаете, просто я привел аргументированные утверждения того, о чем идет тема. Добавлено через 3 минуты Всем спасибо за помощь и потраченное время! Вроде всё сделал, что связано с этим вопросом, кому интересно вот код того, что я сейчас пишу(https://pastebin.com/w3c27vHj), а именно лифтер кода до моего ML языка, а после буду готовить фазы оптимизации типа тех, что есть в LLVM, но только подходящих.
0
|
||||||||||||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||||
| 15.02.2023, 19:01 | |||||||||
Сообщение было отмечено OSPFv3 как решение
Решение
Добавлено через 44 секунды
1
|
|||||||||
|
33 / 25 / 8
Регистрация: 18.12.2022
Сообщений: 83
|
||||
| 15.02.2023, 19:11 [ТС] | ||||
Удачного вечера!
0
|
||||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,104
|
|||
| 15.02.2023, 19:14 | |||
|
1) std::find (а также std::find_if, если нужен предикат) - ищет независимо от сортировки первый элемент. Ищет долго, поскольку не полагается на отсортированность 2) если последовательность отсортирована, то (1) тоже найдёт, но std::lower_bound справится намного быстрее (это бинарный поиск) 3) в случае использования std::find* - поиск очередного элемента нужно начинать с итератора it+1 4) в случае сортированного вектора эквивалентные элементы будут располагаться рядом. std::lower_bound найдёт позицию первого элемента, std::upper_bound - позицию за последним. Если элемента нет, то вернётся либо end() контейнера, либо итератор на другой ключ (стоящий после искомого, если бы искомый был). Как вариант, сначала можно найти lower, а затем шагать по +1, пока ключ нужный Добавлено через 2 минуты
2
|
|||
|
33 / 25 / 8
Регистрация: 18.12.2022
Сообщений: 83
|
|||
| 15.02.2023, 19:22 [ТС] | |||
Хмм, в случае квадратных скобок, вроде перегруженность называется, т.е эта штука "[]" - мне не позволяет IntelliSense писать итератор в них, с чем это может быть связано?, хотя я могу писать итератор в случае с vector.insert...
0
|
|||
|
Неэпический
|
|
| 15.02.2023, 19:27 | |
|
1
|
|
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,104
|
|
| 15.02.2023, 19:31 | |
|
OSPFv3, итератор разыменовывается звёздочкой
*(it - FromRegToNameOfVarInRegConstants)
1
|
|
|
33 / 25 / 8
Регистрация: 18.12.2022
Сообщений: 83
|
||||||||||||
| 15.02.2023, 19:40 [ТС] | ||||||||||||
Это же вообще не работает
0
|
||||||||||||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,104
|
|
| 15.02.2023, 19:44 | |
|
1
|
|
| 15.02.2023, 19:44 | |
|
Помогаю со студенческими работами здесь
20
Функция работы со строкой символов,заменить разделители Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|