Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вернуть из функции указатель на объект 
V
    Опции темы
mes
Дата 28.2.2011, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Нитонисе @  27.2.2011,  23:01 Найти цитируемый пост)
Я так понимаю она имеется в свободном доступе? 

http://www.boost.org
http://www.boost.org/doc/libs/1_46_0/libs/...r/smart_ptr.htm

Цитата(Нитонисе @  27.2.2011,  23:01 Найти цитируемый пост)
 И использование этих указателей нынче распространено?

угу, а с принятием нового стандарта еще все будет в стандартной библиотеке.. 



--------------------
PM MAIL WWW   Вверх
Anikmar
Дата 28.2.2011, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(mes @  27.2.2011,  23:02 Найти цитируемый пост)
Это к чему ? если думаешь, то надо обходится без автоматики ? или я где то сказал, что автоматика заменяет голову ?
я говорил лишь о том , что она снимает некий груз, если ее с умом применить..


Так я с этого и начинал.
Не надо категорично говорить, что вектор не предназначен для хранения объектов через указатели, а надо обязательно использовать обертки в виде "умных" указателей. Без головы - можно и с умными напортачить, а с головой - в нужной ситуации и без них обойтись. При большом количестве объектов - умный указатель может замедлять работу, а при неправильном применении - можно и пару часов какой-нибудь идиотский баг поискать. Умный указатель - далеко не панацея, а в сочетании с вектором - тут уж фиг его знает как дело повернется. ИМХО.

Цитата(Нитонисе @  27.2.2011,  22:59 Найти цитируемый пост)
Зато с вектором идет огромный набор собственных полезных функций и общих STL-алгоритмов. У TList тоже полезностей немало, но чисто умозрительно вектор значительно мощнее. 

Кто же спорит. Я же не сказал, что TList всегда вместо вектора использую - я сказал, что он мне больше нравится. Кстати функционал вектора сам по себе не такой уж и крутой - просто к нему удобно применять общие алгоритмы STL - а это действительно мощно. А так - для самых распространенных задач - сохранить список неких объектов, количество которых заранее неизвестно, отсортировать и что-то с ним еще сделать согласно бизнес-логике - TList вполне применим. Для более крутой математики с STL уже не поспоришь.



PM MAIL ICQ   Вверх
mes
Дата 28.2.2011, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Anikmar @  27.2.2011,  23:55 Найти цитируемый пост)
Не надо категорично говорить, что вектор не предназначен для хранения объектов через указатели, 

вектор действительно не предназначен для описанной в той цитате работы.. 

Цитата(Anikmar @  27.2.2011,  23:55 Найти цитируемый пост)
Без головы - можно и с умными напортачить, а с головой - в нужной ситуации и без них обойтись.

можно и обойтись, кто-то сказал иное ?

Цитата(Anikmar @  27.2.2011,  23:55 Найти цитируемый пост)
При большом количестве объектов - умный указатель может замедлять работу, а при неправильном применении - можно и пару часов какой-нибудь идиотский баг поискать.

может и такое быть.. 

Цитата(Anikmar @  27.2.2011,  23:55 Найти цитируемый пост)
Умный указатель - далеко не панацея, 

прошу пример, где я сказал обратное.. 

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





--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 28.2.2011, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(mes @  28.2.2011,  01:10 Найти цитируемый пост)
я не пойму предмета спора ?

Предмет спора - ваше утверждение о неприменимости указателей в векторе, которое выглядело чересчур категоричным))
PM MAIL   Вверх
mes
Дата 28.2.2011, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Нитонисе @  28.2.2011,  08:09 Найти цитируемый пост)
 о неприменимости

прошу не путать, не о неприменимости, а о не предназначении, в контексте владения объектом  smile

сравните хотя бы с тем же boost.ptr_vector smile
http://www.boost.org/doc/libs/1_46_0/libs/..._container.html
или вот из гугля на русском :
http://blog.alno.name/ru/2009/04/using-boost-ptr-containers



Это сообщение отредактировал(а) mes - 28.2.2011, 09:37


--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 1.3.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Библиотека boost очень интересная, особенно математические функции, но чтобы освоить - понадобится уйма времени)

Возник схожий вопрос с тем что в заголовке темы, новую создавать не стал.

Как вернуть из функции ссылку на объект?
Допустим есть вектор структур:
Код

vector<T> t;

Правильная запись функции, вовращающей некий элемент будет такой?
Код

T& Func(int ind)
{
  if (!t.empty() && t > -1 && t < t.size) return (T&)t[ind];
  else ... // что можно вернуть в качестве ошибки?
}

PM MAIL   Вверх
mes
Дата 1.3.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Нитонисе @  1.3.2011,  17:50 Найти цитируемый пост)
. // что можно вернуть в качестве ошибки?

исключение..

Добавлено через 37 секунд
Цитата(Нитонисе @  1.3.2011,  17:50 Найти цитируемый пост)
(T&)t[ind];

(Т&) - лишнее 


--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 1.3.2011, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(mes @  1.3.2011,  19:06 Найти цитируемый пост)
исключение..

А кроме исключения? Я пока с ними плохо знаком. Вот в случае с возвращением указателей проще. Если не удается вернуть указатель на запрашиваемый объект - можно вернуть NULL. В вызывающей функции обрабатывается этот указатель и понятно - нашли мы то что искали или нет. Впринципе и нет никаких проблем работать с указателем, но интересно как тут быть при работе со ссылками.

Добавлено через 27 секунд
Цитата(mes @  1.3.2011,  19:06 Найти цитируемый пост)
(Т&) - лишнее

Точно? Ведь тогда возвращается сам объект.
PM MAIL   Вверх
mes
Дата 1.3.2011, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Нитонисе @  1.3.2011,  18:25 Найти цитируемый пост)
Вот в случае с возвращением указателей проще. Если не удается вернуть указатель на запрашиваемый объект - можно вернуть NULL. В

разные гарантии...  в случае с ссылками клиент не должен выходить за пределы.. 


Цитата(Нитонисе @  1.3.2011,  18:25 Найти цитируемый пост)
Точно? Ведь тогда возвращается сам объект. 

А   возвращаемый параметр утверждает обратное  smile 


--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 1.3.2011, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(mes @  1.3.2011,  19:46 Найти цитируемый пост)
разные гарантии...  в случае с ссылками клиент не должен выходить за пределы..

Имеется ввиду, что пользоваться такими функциями надо только в случае, если функция обязательно вернет ссылку на нужный объект, а не черти что?
PM MAIL   Вверх
mes
Дата 1.3.2011, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Нитонисе @  1.3.2011,  18:52 Найти цитируемый пост)
Имеется ввиду, что пользоваться такими функциями надо только в случае, если функция обязательно вернет ссылку на нужный объект, а не черти что?

грубо да.. 


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1026 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.