Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,039
1

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

03.08.2013, 03:47. Просмотров 879. Ответов 13
Метки нет (Все метки)


Здорова господа!
Есть задачка "Подумайте как можно спроектировать идеальный класс для универсальной работы с текстами. Назовите его Text. Какими он будет обладать возможностями? Какую нагрузку на реализацию вызовут ваши «идеальные» средства?"

Давайте ее хотя бы теоретически мб решим?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2013, 03:47
Ответы с готовыми решениями:

Класс "Текст" (массив строк) для ограниченного числа строк
Здравствуйте, мне задали лабораторную и я вообще не представляю как это делается, помогите...

Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк.
Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то...

Как сделать один универсальный класс-контейнер а-ля std::tuple из двух различных классов?
Добрый день. Есть работающий код: #include <iostream> #include <map> enum Index { ...

Универсальный указатель или универсальный скалярный тип
Здравствуйте! Помогите, пожалуйста написать программу: требуется написать универсальный скалярный...

13
Jesus loves me
Эксперт С++
5162 / 3131 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
03.08.2013, 10:37 2
Не может быть идеального класса для работы с текстом. Даже существуют специальные текстовые редакторы для работы с большим текстом, потому что там логика работы с данными совсем другая.
Можно попробовать сначала оценивать размер данных (если это возможно, потому что не всегда это так) и исходя из размера выбирать стратегию.
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,039
03.08.2013, 12:41  [ТС] 3
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не может быть идеального класса для работы с текстом. Даже существуют специальные текстовые редакторы для работы с большим текстом, потому что там логика работы с данными совсем другая.
Можно попробовать сначала оценивать размер данных (если это возможно, потому что не всегда это так) и исходя из размера выбирать стратегию.
Ну это вопрос "философский" просто порассуждать на эту тему, тут как мы видим можно попытаться класс Text определить но мы не будем, обойдемся просто сухой теорией. Ну ты конечно скуднуватый ответ дал, да и я недавно главу просматривал буквально два дня назад и также выразить не могу. Ладно мб мы придем к этому.

От смотри почему нельзя? А если мы определим такой класс Text который будет иметь большое количество методов например все методы класса string плюс добавим туда еще и методы для обработки регулярных выражений ну например, я даже незнаю что туда можно добавить, мб оптимизируем его для коротки строк и все готов универсальный класс на все случаю. Мб и можно сделать, просто ты мб не шаришь как?
0
2080 / 1234 / 436
Регистрация: 29.05.2013
Сообщений: 5,555
03.08.2013, 12:44 4
Практически все уже давно реализовано, скомпоновать самое вкусное и готово Начать можно с этого:
1. Загрузка,Сохранение
2. Поиск,Замена
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,039
03.08.2013, 12:53  [ТС] 5
Цитата Сообщение от Пытливый Посмотреть сообщение
Практически все уже давно реализовано, скомпоновать самое вкусное и готово Начать можно с этого:
1. Загрузка,Сохранение
2. Поиск,Замена
Да ясно что реализовано, но вроде как string не универсальный класс. Хотя впринципе для меня хвати его возможностей и то все их я не заюзаю. Нужно просто подумать над вопросом создание одного класса и навсегда, что бы потребность в других классах отпала, возможно ли это?
0
Jesus loves me
Эксперт С++
5162 / 3131 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
03.08.2013, 12:53 6
Цитата Сообщение от ninja2 Посмотреть сообщение
От смотри почему нельзя?
В общем-то можно, но он будет слишком загроможден.
Цитата Сообщение от ninja2 Посмотреть сообщение
плюс добавим туда еще и методы для обработки регулярных выражений
Обработкой регулярных выражений должен заниматься класс обработки регулярных выражений, а не String.
1
2080 / 1234 / 436
Регистрация: 29.05.2013
Сообщений: 5,555
03.08.2013, 13:02 7
Вот не согласен с этим. Регулярки нужны для обработки текста в первую очередь и именно там им и место. Они в раздел поиск/замена четко вписываются.
Можно еще кодирование/декодирование Mime64 добавить
0
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
03.08.2013, 13:16 8
Пытливый, Не надо из строки делать какого-то монстра пожалуйста. Использовать объекты разных классов, где каждый выполняет свою определенную роль - намного лучше. Даже std::string из STL слишком монолитный.
0
Higher
1945 / 1211 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.08.2013, 13:27 9
Цитата Сообщение от ForEveR Посмотреть сообщение
Даже std::string из STL слишком монолитный.
В теории.
А на практике ею проще пользоваться за счет этого.
В дотнете коллекции гораздо более монструозные, но и пользоваться ими удобнее в разы (как минимум, код можно читать слева направо).
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,039
03.08.2013, 14:00  [ТС] 10
А можно б и определить класс Text универсальный сделав наследование от класса std::string, и перегрузив функции для работы с РВ вызывая функции из <regex> и получится мб универсальный класс.

Ладно будем считать что нам не понадобится много возможностей из этого класса и поэтому лучше создавать набор классов - библиотеку и по мере необходимости подключать соответствующий класс.
0
Jesus loves me
Эксперт С++
5162 / 3131 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
03.08.2013, 17:05 11
можно еще в него добавить что-нибудь типа createPdf() и sendRequest(Url), для бОльшей универсальности
0
What a waste!
1588 / 1287 / 173
Регистрация: 21.04.2012
Сообщений: 2,696
03.08.2013, 23:06 12
ninja2, для "работы с текстами" - если предположить, что изменяющие содержимое операции будут очень редки, то можно сделать класс "неизменяемым" (immutable), хранить сами строки в пуле, в самом объекте Text - указатель на хранилище, начало, и конец строки (ну или что-нибудь подобное). Интерфейс вроде не жирный должен получиться...
0
Эксперт С++
8354 / 6101 / 610
Регистрация: 10.12.2010
Сообщений: 28,389
Записей в блоге: 29
03.08.2013, 23:17 13
Цитата Сообщение от Kastaneda Посмотреть сообщение
можно еще в него добавить что-нибудь типа createPdf() и sendRequest(Url), для бОльшей универсальности
Ага, вдруг спросят, а у нас нет ...
0
Don't worry, be happy
16968 / 9849 / 1897
Регистрация: 27.09.2012
Сообщений: 24,422
Записей в блоге: 1
04.08.2013, 09:04 14
Цитата Сообщение от ninja2 Посмотреть сообщение
Подумайте как можно спроектировать идеальный класс
Существуют сотни реализаций строк и какая из них лучшая (я уж не говорю о идеальной).

По сути, идеальная строка эта та, в которой все операции имеют сложность O(1) Найдете такую - напишите
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2013, 09:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Класс для множеств строк (string)
Всем, Привет! :help: Мне нужно: Создать класс для множеств строк (string). Написать функцию по...

Описать класс для хранения строк
Доброго всем времени суток. Помогите пожалуйста. получил задание: Описать класс для хранения...

Реализовать класс для работы с одномерными массивами указателей строк
всем привет. помогите пожалуйста не могу написать прогу по заданию. реализовать класс для работы с...

Универсальный класс для любых чисел
Хочу создать свой класс для описания точки. public class MyPoint{ double x, y; } как бы...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.