|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.03.2020, 17:45 | #1 |
Новичок
Джуниор
Регистрация: 01.03.2020
Сообщений: 2
|
Как сжать строку в c++
В двух словах:
Имеется строка Код:
Если не в двух,то : Массив может состоять не только из этих 3 букв,пользователь вводит все сам Пробовал так: Код:
Можете подсказать как довести до ума,а лучше пример кода,желательно с комментариями. Заранее спасибо P.S. wordZIP уже имеет в себе рандомное слово. P.S.S. Длина последовательности повторяющихся может быть любой. |
01.03.2020, 18:15 | #2 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 968
|
формат такой:
<количество_повторов> <двоеточие> <символ> Код:
Код:
очевидно, что для выгоды использования такого сжатия необходимо, чтобы было много повторов по 4+ символов. Иначе результат будет такой же или длиннее P.S. к ZIP это всё отношения не имеет Последний раз редактировалось Алексей1153; 01.03.2020 в 18:20. |
01.03.2020, 19:03 | #3 |
Новичок
Джуниор
Регистрация: 01.03.2020
Сообщений: 2
|
Алексей1153, Понял,спасибо,но не совсем понимаю смысл строчки
Код:
Код:
Код:
Код:
Собственно не очень хорошо понимаю,если с Код:
Код:
Код:
Код:
Код:
Код:
P.S.Про zip понял P.S. А в чем плюс использовать auto,тоже впервые столкнулся,почитал,что это позволяет не указывать тип переменной явно,но стоит ли ее постоянно использовать или это только ухудшает понимание кода человеком? |
01.03.2020, 20:26 | #4 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 968
|
std::find_if - стандартная функция STL. На вход принимает два итератора - начало и конец контейнера, где производится поиск. Третий параметр - предикат, возвращающий тип bool
в качестве предиката у меня использована лямбда [ &beg ] //захват переменной beg по ссылке (этот итератор указывает на первый символ в цепочек) ( const auto& c ) //список аргументов аргументов - ссылка на текущий проверяемый элемент контейнера { return c!=*beg; } //тело лямбды - возвращается результат сравнения (элемент не равен первому символу в цепочке) в итоге, в итераторе curr_end оказывается конец диапазона с одинаковыми символами это не плюс и не минус, это возможность языка. Хотя, иногда auto реально улучшает читабельность (да и скорость набора кода). Для сравнения: Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что значит сжать? | PadavanPanda | C# (си шарп) | 4 | 19.05.2018 17:21 |
Сжать exe файл | Legeardo | Общие вопросы Delphi | 11 | 22.10.2016 12:33 |
Сжать массив | tanyuxxxa | Помощь студентам | 4 | 12.02.2013 19:12 |
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку | tarasman11 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 05.07.2012 20:27 |
Как сжать bmp? | MkG | Общие вопросы C/C++ | 2 | 23.05.2010 12:10 |