0 / 0 / 0
Регистрация: 13.12.2015
Сообщений: 2
|
|
1 | |
Ленивые вычисления или "я что-то пропустил и в c# есть ссылки на строки?"23.12.2018, 21:04. Показов 2060. Ответов 6
Метки нет (Все метки)
Доброго дня, уважаемые члены форума!
Прошу знающих людей подсказать верный путь к решению такой вот задачки: Реализовать класс 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
|
23.12.2018, 21:04 | |
Ответы с готовыми решениями:
6
Получение i-ого элемента массива без вычисления всех элементов (Ленивые вычисления) Найдите ошибку или что я пропустил не могу найти ! Кривость рук или я что то пропустил? PHP не обрабатывает данные Ленивые вычисления |
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
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,640
|
|
24.12.2018, 10:12 | 7 |
Ага, только будет создаваться буфер (внутри StringBuilder) размером с ту же самое строку (или больше).
0
|
24.12.2018, 10:12 | |
24.12.2018, 10:12 | |
Помогаю со студенческими работами здесь
7
Ленивые вычисления в C++ Ленивые вычисления Ленивые работники и что с этим делать Django: Что это такое вообще? Что я пропустил в изучении Python? Я что то пропустил Что я тут пропустил? Подскажите что я пропустил в коде Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |