0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 11
|
|
1 | |
Ленивая инициализация!12.06.2013, 22:40. Показов 7172. Ответов 34
Метки нет (Все метки)
Объясните пожалуйста реальный пример применения ленивой инициализации.Можно с листингом простой программы.
0
|
12.06.2013, 22:40 | |
Ответы с готовыми решениями:
34
Инициализация Инициализация инициализация класса С++ Инициализация в структуре |
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
12.06.2013, 22:47 | 2 | |||||
Сообщение было отмечено как решение
Решение
Например:
3
|
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 11
|
|
12.06.2013, 22:56 [ТС] | 3 |
А можно узнать реальное использование данного метода
0
|
Ушел с форума
|
|
12.06.2013, 23:17 | 4 |
Ленивая инициализация - это частный случай более общего понятия, называется
"ленивые вычисления" (lazy evaluations) или "отложенные вычисления". Смысл в том, чтобы отложить какие-то действия, например создание объекта или определенные вычисления, до того момента, когда это реально потребуется. Это позволяет ускорить запуск программы, а также избежать создания объектов или данных, которые до определенного момента не задействованы. Обычно реализация данного паттерна тривиальна, но если программа многопоточная, то lazy-объекты и lazy-данные должны быть защищены от одновременного "создания" двумя или более потоками одновременно.
2
|
Неэпический
|
|
12.06.2013, 23:19 | 5 |
Конечно можно.
Допустим, у нас есть класс string и объект этого класса str. Мы передаем в функцию копию str, но в конструкторе копирования этого класса используется ленивая инициализация, и память под новую строку не выделяется, а просто используется память оригинального объекта str. В случае, если в функции эта строка не изменяется, то и выделять новую память по сути смысла нет - лишняя трата ресурсов. А при первой попытке изменения данных, память будет выделена для новой строки и данные из объекта-оригинала будут скопированы Достаточно примитивный пример, но многие реализации строк именно так и выглядят
2
|
Убежденный
|
12.06.2013, 23:34
#7
|
Не по теме:
0
|
Croessmah
|
12.06.2013, 23:37
#8
|
Не по теме: Tulosba, в многопоточности многое что себя не оправдало, да и до недавнего времени даже в стандарте многопоточность не жаловали :) но мир меняется :D
1
|
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 11
|
|
13.06.2013, 22:35 [ТС] | 9 |
Croessmah а ещё код к этому описанию закиньте пожалуйста
0
|
13.06.2013, 23:34 | 10 |
Пример в студию! Честно говоря я мало понял из этих слов...
Про многопоточность тоже не понял... Можно не приводить аргументов без фактов!?.. .. а то все как-то растекается мыслью по древу... Добавлено через 21 минуту Откуда в функции конструктор копирования?
0
|
Каратель
|
|
13.06.2013, 23:42 | 11 |
Сообщение было отмечено как решение
Решение
copy on write - при копировании объекты копируются поверхностно и при попытке модифицировать копию будет выполнено полное копирование т.е. модификация произойдет уже с копией. Нет модификаци - нет полного копирования.
На примере со строкой это выглядит так: при поверхностном копировании (shallow copy) - будет скопирован лишь указатель на строку; полное копирование (deep copy) - будет выделена новая память в которую скопируют строку. Добавлено через 39 секунд примеры в гугле
4
|
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 11
|
|
14.06.2013, 00:01 [ТС] | 12 |
а найти что-небудь конкретное можно с кодом не сложным и с подробным объяснением какой пример реальный срочно нужно
Добавлено через 13 минут а именно само отличие программы с ленивой инициализацией от обычной
0
|
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 11
|
|
14.06.2013, 00:18 [ТС] | 14 |
я понимаю что оно даёт, я не понимаю сам смысл действия программы, отложить действия до момента когда это необходимо, а без ленивой инициализации как эти действия выполняются?
0
|
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 11
|
|
14.06.2013, 02:20 [ТС] | 16 |
в какой момент выполняется без ленивой инициализании, а в какой с ленивой?
0
|
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 11
|
|
14.06.2013, 02:42 [ТС] | 18 |
а по подробней?
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
14.06.2013, 03:20 | 19 |
а поподробней пишется слитно
Что может быть тривиальней примера Ленивая инициализация!
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
14.06.2013, 09:31 | 20 | |||||
У нас в частности, lazy инициализация используется для чтения из базы исключительно когда это нужно. Схематичный пример
0
|
14.06.2013, 09:31 | |
14.06.2013, 09:31 | |
Помогаю со студенческими работами здесь
20
Правильная инициализация ? инициализация указателя инициализация значений Инициализация переменных С++11 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |