|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.12.2014, 16:10 | #11 | |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
Цитата:
Код:
|
|
03.12.2014, 21:14 | #12 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Iron Monk, имхо, это код не сильно лучше.
Каждый вызов delete(tmp, 1, 1) приводит к тому, что в памяти выделяется память под новую строку, в созданную строку переписывается текст без удаляемого символа, потом старый tmp удаляется, и в переменную tmp (которая является УКАЗАТЕЛЕМ на строку) переписывается указатель на новую область памяти. Это и есть та самая "bad practice". Если Вам интересно, как написать "good" - то очень рекомендую разобрать алгоритм, предложенный StriderX в пост #2. Обратите внимание, что при переборе строки она НЕ ИЗМЕНЯЕТСЯ (изменяется только счётчик, отсчитывающий, сколько пустых символ в начале строки подлежит удалению). А потом мы сразу возвращаем ПОДСТРОКУ нужной длины (без пустых символов). It's GOOD! |
03.12.2014, 21:53 | #13 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
Ок, без делита.
Код:
|
03.12.2014, 22:01 | #14 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Copy та же хня.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
03.12.2014, 22:05 | #15 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
Но копируется только один раз. Идем дальше:
Код:
Код:
Последний раз редактировалось Iron Monk; 03.12.2014 в 22:28. |
03.12.2014, 23:13 | #16 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
мне вариант с Copy (пост #13) понравился.
|
03.12.2014, 23:22 | #17 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
|
03.12.2014, 23:43 | #18 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Выделение памяти под Result и копирование туда подстроки (Copy) произойдёт один раз за вызов функции. Это нормально! |
|
03.12.2014, 23:53 | #19 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
|
04.12.2014, 00:33 | #20 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как отбросить пробелы после числа? | MishkaSh | Помощь студентам | 1 | 04.04.2013 05:52 |
заменить элементы одномерного массива, стоящие перед минимальным - на нули, а стоящие после максимального - на единицы (Паскаль) | Женька Good | Помощь студентам | 2 | 01.12.2011 06:22 |
как заставить VBA не откидывать нули впереди числа | kusyusha | Microsoft Office Word | 3 | 14.11.2010 22:27 |
Дано число. Отбросить в нем все цифры, стоящие левее самой правой единицы. | SkApY | Помощь студентам | 5 | 09.11.2009 20:58 |
как отбросить целую часть оставив дробную | Alex26RusLink | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 24.10.2009 11:36 |