|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||||||||||||
Свой шаблонный класс string для char wchar_t, оптимизация22.01.2024, 16:45. Показов 3190. Ответов 38
Доброго времени суток.
Создал свой класс string. Цель создания своего класса строк - это скорость работы со строками и второе в образовательных целях. Если реализация получится удачной сделаю библиотеку для личного использования. new и delete решил не использовать, просьба не рекомендовать их. Представленный вариант пока в разработке, но тем не менее работает. Не хочу получить UB и пр. Просьба просмотреть и по возможности проверить. Жду ваших рекомендаций. Кастомные функции для строк char wchar_t используются внутри класса :
0
|
||||||||||||||||
| 22.01.2024, 16:45 | |
|
Ответы с готовыми решениями:
38
Подскажите как доработать свой класс для строк wchar_t Преобразование между типами System::String, char*, wchar_t*, std::string и др. Конвертация строк: System::String в массив char/wchar_t, std::string и обратно |
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||||||||
| 25.01.2024, 00:59 [ТС] | ||||||||||||
Я наверно туплю сильно или чего-то не пойму как мне сделать? для представленного случая в тесте в майн Добавлено через 11 минут Я так понимаю мне нужно как-то вернуть сколько я прочитал и после этого смогу прочитать дальше.
0
|
||||||||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|
| 25.01.2024, 07:47 [ТС] | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||||||||
| 25.01.2024, 19:43 [ТС] | ||||||||||||
|
полностью рабочая перегрузка оператора >>. Добавил в класс делимитер, теперь можно читать до любого символа если делимитер равен нулю читаем весь файл. Вот реализация:
Как пример реализации распарсил библиотечный string, его реализация похожа на тот пример который был от DrOffset Добавлено через 1 час 34 минуты
0
|
||||||||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||
| 26.01.2024, 18:29 [ТС] | ||||||
|
Подскажите как правильно сделать функцию чтения строки с удалением прочитанной строки, я сделал так но наверно не оптимально или с ошибками.
0
|
||||||
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
|
|
| 26.01.2024, 19:08 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 26.01.2024, 19:14 [ТС] | ||
|
строка2 строка3 **** после get_line(del_line = true) должна удалиться прочитанная строка строка2 строка3 ****
0
|
||
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
|
||||||||
| 26.01.2024, 19:37 | ||||||||
|
Добавлено через 2 минуты аа, дошло. Как-то так
= такой есть и реализован правильно ![]() Добавлено через 16 минут при помощи memmove сдвигаем хвост строки в начало на len_str элементов затем вызываем realloc с новым размером leng - len_str высока вероятность, что это всегда сработает (и realloc не вернёт 0) но это увеличивает мусорный хвост блока памяти, выделенного под строку системой. Ну, наверное, отдельно надо рассмотреть случай, когда строка станет нулевой длины ----- выбирай, какой способ нравится больше
1
|
||||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|||||||
| 26.01.2024, 19:44 [ТС] | |||||||
|
Вот все операторы:
какие операторы еще нужно добавить? Добавлено через 42 секунды проверю пока сишный метод
0
|
|||||||
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
|
|
| 26.01.2024, 19:48 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|
| 26.01.2024, 19:52 [ТС] | |
|
сработало
0
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
|
||
| 26.01.2024, 19:53 | ||
|
1
|
||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||
| 26.01.2024, 19:53 [ТС] | ||
|
0
|
||
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
|
|
| 26.01.2024, 19:59 | |
|
Signum7, почему-то сообщения местами переставились
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
|
| 26.01.2024, 20:01 [ТС] | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||||||||||||
| 27.01.2024, 15:07 [ТС] | ||||||||||||||||
|
Создал для своего класса итератор, подскажите на сколько там все правильно для моего класса.
класс итератор:
Для моего класса такая конструкция работает:
0
|
||||||||||||||||
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
|
|
| 27.01.2024, 15:09 | |
|
Signum7, было бы логично разместить класс внутри str::string и назвать iterator
1
|
|
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||||||||
| 27.01.2024, 18:56 [ТС] | ||||||||||||
|
класс в доработке еще но вот выкладываю то, что на данный момент:
кастомные функции для класса
понял почему так предлагаете: Обратите внимание, что эта функция оставляет значение ptr неизменным, следовательно, он по-прежнему указывает на тот же блок памяти, а не на нулевой указатель. Параметры: ptrmem Указатель на блок памяти, ранее выделенный функциями malloc, calloc или realloc, которую необходимо высвободить. Если в качестве аргумента передается нулевой указатель, никаких действий не происходит.
0
|
||||||||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||
| 29.01.2024, 14:06 [ТС] | ||||||
|
Оптимизировал выделение памяти теперь использую амортизацию размера выделенной памяти :
0
|
||||||
|
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 141
|
||||||
| 30.01.2024, 18:23 [ТС] | ||||||
|
Помогите мне пожалуйста заполнить правильно итератор random_access_iterator для моего класса:
0
|
||||||
| 30.01.2024, 18:23 | |
|
Создать строковый шаблонный класс String как переделать шаблонный класс-стек в шаблонный класс-очередь ! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|