Форум программистов, компьютерный форум CyberForum.ru

Универсальный класс для строк - C++

Восстановить пароль Регистрация
 
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.08.2013, 03:47     Универсальный класс для строк #1
Здорова господа!
Есть задачка "Подумайте как можно спроектировать идеальный класс для универсальной работы с текстами. Назовите его Text. Какими он будет обладать возможностями? Какую нагрузку на реализацию вызовут ваши «идеальные» средства?"

Давайте ее хотя бы теоретически мб решим?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
03.08.2013, 10:37     Универсальный класс для строк #2
Не может быть идеального класса для работы с текстом. Даже существуют специальные текстовые редакторы для работы с большим текстом, потому что там логика работы с данными совсем другая.
Можно попробовать сначала оценивать размер данных (если это возможно, потому что не всегда это так) и исходя из размера выбирать стратегию.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.08.2013, 12:41  [ТС]     Универсальный класс для строк #3
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не может быть идеального класса для работы с текстом. Даже существуют специальные текстовые редакторы для работы с большим текстом, потому что там логика работы с данными совсем другая.
Можно попробовать сначала оценивать размер данных (если это возможно, потому что не всегда это так) и исходя из размера выбирать стратегию.
Ну это вопрос "философский" просто порассуждать на эту тему, тут как мы видим можно попытаться класс Text определить но мы не будем, обойдемся просто сухой теорией. Ну ты конечно скуднуватый ответ дал, да и я недавно главу просматривал буквально два дня назад и также выразить не могу. Ладно мб мы придем к этому.

От смотри почему нельзя? А если мы определим такой класс Text который будет иметь большое количество методов например все методы класса string плюс добавим туда еще и методы для обработки регулярных выражений ну например, я даже незнаю что туда можно добавить, мб оптимизируем его для коротки строк и все готов универсальный класс на все случаю. Мб и можно сделать, просто ты мб не шаришь как?
Пытливый
944 / 421 / 99
Регистрация: 29.05.2013
Сообщений: 1,727
03.08.2013, 12:44     Универсальный класс для строк #4
Практически все уже давно реализовано, скомпоновать самое вкусное и готово Начать можно с этого:
1. Загрузка,Сохранение
2. Поиск,Замена
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.08.2013, 12:53  [ТС]     Универсальный класс для строк #5
Цитата Сообщение от Пытливый Посмотреть сообщение
Практически все уже давно реализовано, скомпоновать самое вкусное и готово Начать можно с этого:
1. Загрузка,Сохранение
2. Поиск,Замена
Да ясно что реализовано, но вроде как string не универсальный класс. Хотя впринципе для меня хвати его возможностей и то все их я не заюзаю. Нужно просто подумать над вопросом создание одного класса и навсегда, что бы потребность в других классах отпала, возможно ли это?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
03.08.2013, 12:53     Универсальный класс для строк #6
Цитата Сообщение от ninja2 Посмотреть сообщение
От смотри почему нельзя?
В общем-то можно, но он будет слишком загроможден.
Цитата Сообщение от ninja2 Посмотреть сообщение
плюс добавим туда еще и методы для обработки регулярных выражений
Обработкой регулярных выражений должен заниматься класс обработки регулярных выражений, а не String.
Пытливый
944 / 421 / 99
Регистрация: 29.05.2013
Сообщений: 1,727
03.08.2013, 13:02     Универсальный класс для строк #7
Вот не согласен с этим. Регулярки нужны для обработки текста в первую очередь и именно там им и место. Они в раздел поиск/замена четко вписываются.
Можно еще кодирование/декодирование Mime64 добавить
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.08.2013, 13:16     Универсальный класс для строк #8
Пытливый, Не надо из строки делать какого-то монстра пожалуйста. Использовать объекты разных классов, где каждый выполняет свою определенную роль - намного лучше. Даже std::string из STL слишком монолитный.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.08.2013, 13:27     Универсальный класс для строк #9
Цитата Сообщение от ForEveR Посмотреть сообщение
Даже std::string из STL слишком монолитный.
В теории.
А на практике ею проще пользоваться за счет этого.
В дотнете коллекции гораздо более монструозные, но и пользоваться ими удобнее в разы (как минимум, код можно читать слева направо).
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.08.2013, 14:00  [ТС]     Универсальный класс для строк #10
А можно б и определить класс Text универсальный сделав наследование от класса std::string, и перегрузив функции для работы с РВ вызывая функции из <regex> и получится мб универсальный класс.

Ладно будем считать что нам не понадобится много возможностей из этого класса и поэтому лучше создавать набор классов - библиотеку и по мере необходимости подключать соответствующий класс.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
03.08.2013, 17:05     Универсальный класс для строк #11
можно еще в него добавить что-нибудь типа createPdf() и sendRequest(Url), для бОльшей универсальности
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
03.08.2013, 23:06     Универсальный класс для строк #12
ninja2, для "работы с текстами" - если предположить, что изменяющие содержимое операции будут очень редки, то можно сделать класс "неизменяемым" (immutable), хранить сами строки в пуле, в самом объекте Text - указатель на хранилище, начало, и конец строки (ну или что-нибудь подобное). Интерфейс вроде не жирный должен получиться...
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
03.08.2013, 23:17     Универсальный класс для строк #13
Цитата Сообщение от Kastaneda Посмотреть сообщение
можно еще в него добавить что-нибудь типа createPdf() и sendRequest(Url), для бОльшей универсальности
Ага, вдруг спросят, а у нас нет ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2013, 09:04     Универсальный класс для строк
Еще ссылки по теме:

Класс, для полей которого нужно использовать класс C++
Создать универсальный вектор для разных типов класса C++
Универсальный указатель или универсальный скалярный тип C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
04.08.2013, 09:04     Универсальный класс для строк #14
Цитата Сообщение от ninja2 Посмотреть сообщение
Подумайте как можно спроектировать идеальный класс
Существуют сотни реализаций строк и какая из них лучшая (я уж не говорю о идеальной).

По сути, идеальная строка эта та, в которой все операции имеют сложность O(1) Найдете такую - напишите
Yandex
Объявления
04.08.2013, 09:04     Универсальный класс для строк
Ответ Создать тему
Опции темы

Текущее время: 09:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru