Заблокирован
|
|||||||||||
1 | |||||||||||
Нужно ли передавать итератор в функцию по ссылке?09.02.2016, 17:49. Показов 5988. Ответов 22
Метки нет (Все метки)
Добрый день !
Итератор это тот же обьект но с поведением указателя. Нужно ли его в функцию передавать как ссылку ?
0
|
09.02.2016, 17:49 | |
Ответы с готовыми решениями:
22
Как лучше передавать аргумент в функцию - по ссылке или по указателю? Как передавать объекты в функцию по ссылке, как в C++? Можно ли как-то передавать в функцию то поле, какое нужно печатать Что значит Handle hf? Что в эту функцию нужно передавать |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
09.02.2016, 19:44 | 2 |
RAFA91, Зависит от того, что хотим сделать с этим итератором. В твоем случае нет.
1
|
10.02.2016, 07:50 | 4 | |||||
В stl все передается по значению в том числе и итераторы. Т.е. они оптимизированны для передачи по значению. Не стоит отходить от этой славной традиции. Проверьте сами:
Но в целом ForEveR прав. Все зависит от того, что вы хотите сделать с итератором.
1
|
Заблокирован
|
|
10.02.2016, 14:12 [ТС] | 5 |
на сколько я знаю по ссылке. на кой создавать копию списка который содержит в себе миллион обьектов весом по
100 байт каждый ? и кому будет от этого плохо если передать по ссылке список в функцию? а какие он может содержать данные ? данные содержит список а итератор это тот же указатель Добавлено через 5 минут а какие он может содержать данные ? данные содержит список а итератор это тот же указатель а что с ним можно делать кроме как иметь доступ к элементам контейнера
0
|
Заблокирован
|
||||||
10.02.2016, 14:36 [ТС] | 7 | |||||
вот этот пример демонстрирует что при передачи списка по значению будет создана копия списка и затрачена на
копию паиять. так что я лучше себя застрахую и передам подобные вещи по ссылке.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
10.02.2016, 14:44 | 10 |
RAFA91, Очевидно, что если вы принимаете контейнер по значению будет копия. Но итератор это не контейнер и расходы на копию достаточно малы.
1
|
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
|
|||||||||||
10.02.2016, 14:50 | 12 | ||||||||||
если вы боитесь за то, что может выделиться много памяти, то за это не стоит бояться, лучше передавать по значению, чтобы создавалась копия, т.к. в случае передачи по ссылке мы рискуем изменить сам итератор, и потом будут вопросы типа почему такое не работает:
конечно если у вас что-то типа
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
10.02.2016, 16:21 | 17 |
RAFA91, Вы много алгоритмов видели в STL, где работа идет по контейнеру, а не по итераторам? Под все подразумевалось: итераторы, функторы, что там еще получают STL алгоритмы.
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
24.08.2023, 22:05 | 19 |
А для каких случаев желательно предавать итератор по ссылке ? Что нужно хотеть сделать с итератором, чтобы была необходимость передать его по ссылке ?
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
24.08.2023, 22:24 | 20 |
0
|
24.08.2023, 22:24 | |
24.08.2023, 22:24 | |
Помогаю со студенческими работами здесь
20
Можно ли передавать событие по ссылке Как передавать массив по ссылке, чтобы не работала копия массива? Зачем при перегрузке инкремента дружественной функцией передавать аргумент по ссылке? Как передавать указатель на функцию в функцию для ее выполнения? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |