Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 13.12.2015
Сообщений: 2
1

Ленивые вычисления или "я что-то пропустил и в c# есть ссылки на строки?"

23.12.2018, 21:04. Показов 2060. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня, уважаемые члены форума!
Прошу знающих людей подсказать верный путь к решению такой вот задачки:

Реализовать класс StrSlice, который представляет срез (подстроку) строки. Этот
класс предоставляет ленивые вычисления, т.е. мы не создаем новую строку из подстроки в
памяти, а сохраняем ссылку на исходную строку. С объектом класса StrSlice
работаем также как и с обычной строкой.

Например,
StrSlice s = new StrSlice(“Hello world”, 0, 5); //срез содержит “Hello”

Реализовать методы:

Print() – выводит подстроку.
Equals(string s) – равен ли срез строке s.
Trim() – убирает все разделительные символы (пробел, табуляция, перевод на новую строку) из начала и конца подстроки «лениво», т.е. без создания новой строки.
Substring(int startIndex, int Length) – вернет подстроку (объект класса StrSlice) от среза.

Беглый поиск по гуглу результатов не дал, что это за ленивые вычисления, что за сохранение ссылки на строку - для меня тайна. Насколько я знаю, внутри класса объявить переменную ref string str - нельзя, объявлению всегда должна сопутствовать инициализация.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2018, 21:04
Ответы с готовыми решениями:

Получение i-ого элемента массива без вычисления всех элементов (Ленивые вычисления)
Здравствуйте! Необходимо в цикле получать каждый i-й элемнент. Работаю с массивами массивов целых...

Найдите ошибку или что я пропустил не могу найти !
void SortBubble(int ar, int n) { int temp; for(int i=0 ; i<n-2 ; i++) { for(int j=0 ; j <...

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

Ленивые вычисления
____Много есть информации под boost, так же не отстает шарп и опережает всех хаскель. В плюсах...

6
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
23.12.2018, 21:09 2
Т.к. строка - сама по себе ссылочный тип, то логично предположить что и ссылки на строки тоже есть.
0
1144 / 853 / 262
Регистрация: 30.04.2009
Сообщений: 3,581
23.12.2018, 21:26 3
Думаю ленивые вычисления в данном случае подразумевают, что вы не создаете подстроку сразу, а только когда вам действительно нужно получить эту подстроку, например для печати. До этого момента все функции типа Trim, Equals выполняются используя индексы начала и конца подстроки.
0
0 / 0 / 0
Регистрация: 13.12.2015
Сообщений: 2
23.12.2018, 21:32  [ТС] 4
nicolas2008, другими словами - в классе будут три переменные: string str (в которую помещать строку из конструктора), int start и int end для начального и конечного индексов? все так просто?
0
1144 / 853 / 262
Регистрация: 30.04.2009
Сообщений: 3,581
23.12.2018, 21:43 5
gvbfhfg, Функции Trim и Equals надо реализовать вручную ибо стандартные функции работают со строками.

Добавлено через 53 секунды
А так да, ничего сложного
0
For i:=0 to 150 do
225 / 105 / 108
Регистрация: 05.01.2012
Сообщений: 286
23.12.2018, 22:00 6
Использовать внутри класса StringBuilder и новая строка создаваться не будет
0
Эксперт .NET
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,640
24.12.2018, 10:12 7
Цитата Сообщение от El41 Посмотреть сообщение
Использовать внутри класса StringBuilder и новая строка создаваться не будет
Ага, только будет создаваться буфер (внутри StringBuilder) размером с ту же самое строку (или больше).
0
24.12.2018, 10:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2018, 10:12
Помогаю со студенческими работами здесь

Ленивые вычисления в C++
Как переопределить операторы так, чтобы можно было запомнить формулу, чтобы вычислить её по...

Ленивые вычисления
Добрый вечер, Уважаемые форумчане! Есть вот такое задание: С помощью класса Stream опишите...

Ленивые работники и что с этим делать
Всем добрый день. Будучи эникеем в небольшой конторе, столкнулся с таким явлением: Какая ни будь...

Django: Что это такое вообще? Что я пропустил в изучении Python?
Какой язык используется в фигурных скобках? Это разве python? Если кто знает то дайте мне ссылку...

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

Что я тут пропустил?
with DataModule2.ADONew_cars do begin close; SQL.Clear; SQL.Add('SELECT * FROM new_cars WHERE...

Подскажите что я пропустил в коде
Вроде и опыт в верстке есть, но что то башка не варит сегодня, сайт: http://lux-kadr.ru/test/...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru