Форум — Development [c++0x] область применения vector<unique_ptr> 0 2 зачем оно может быть нужно? Ссылка
unique_ptr - это замена auto_ptr, т.е. ровно для того же, только ощутимо удобней aho (21.04.11 19:48:22 MSK) Показать ответ Ссылка
Ответ на: комментарий от aho 21.04.11 19:48:22 MSK ну а коллекция из unique_ptr или auto_ptr для чего может пригодиться? dt1 ★★ (21.04.11 20:02:23 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от dt1 21.04.11 20:02:23 MSK Временное хранилище объектов наверное. Типа достал из массива, попользовался, и обратно затолкал. elverion (21.04.11 20:05:15 MSK) Показать ответ Ссылка
Ответ на: комментарий от elverion 21.04.11 20:05:15 MSK так проще указатели хранить dt1 ★★ (21.04.11 20:23:55 MSK) автор топика Ссылка
То же самое, что и вектор из указателей, только само удаляет все объекты. Бонус: можно хранить полиморфные объекты, хотя и без этого удобно. const86 ★★★★★ (21.04.11 20:29:47 MSK) Показать ответ Ссылка
Ответ на: комментарий от const86 21.04.11 20:29:47 MSK мне как раз и нравится, что оно само все удалит, но ведь пользоваться не удобно то есть цикл по коллекции должен быть примерно такой: for (auto it = collection.begin(); it != collection.end(); ++it) { Object* o = it->get(); ... } а если использовать просто коллекцию из указателей, то достаточно: for (Object* o: collection) { ... } dt1 ★★ (21.04.11 20:48:17 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от dt1 21.04.11 20:48:17 MSK Разве не пойдёт for (unique_ptr<Object> o: collection) const86 ★★★★★ (21.04.11 20:50:04 MSK) Показать ответ Ссылка
Ответ на: комментарий от dt1 21.04.11 20:48:17 MSK Object* o = it->get();Это зачем? operator-> применяется до тех пор пока не приведёт к типу, для которого он не перегружен. Begemoth ★★★★★ (21.04.11 20:57:06 MSK) Показать ответ Ссылка
Ответ на: комментарий от const86 21.04.11 20:50:04 MSK for (unique_ptr<Object> o: collection)А развеfor (auto o: collection) не достаточно? Begemoth ★★★★★ (21.04.11 20:58:04 MSK) Показать ответы Ссылка
Ответ на: комментарий от Begemoth 21.04.11 20:58:04 MSK Да, с auto всё ещё проще.Ну и в любом случае, заплатить за некоторое удобство необходимостью напечатать несколько лишних букв - обычно дело для плюсов. const86 ★★★★★ (21.04.11 21:03:39 MSK) Ссылка
Ответ на: комментарий от Begemoth 21.04.11 20:58:04 MSK > for (auto o: collection) Поправочка, подсказанная gcc-4.6:for (auto &o: collection) const86 ★★★★★ (21.04.11 21:19:57 MSK) Показать ответы Ссылка
Ответ на: комментарий от const86 21.04.11 21:19:57 MSK Что называется, почувствуйте разницу.. xDD LamerOk ★★★★★ (21.04.11 21:25:42 MSK) Показать ответ Ссылка
Ответ на: комментарий от LamerOk 21.04.11 21:25:42 MSK То что «for (auto o: collection)» неправильно понятно сразу. elverion (21.04.11 21:26:28 MSK) Ссылка
Ответ на: комментарий от Begemoth 21.04.11 20:57:06 MSK > Это зачем? operator-> применяется до тех пор пока не приведёт к типу, для которого он не перегружен. ну это кому как нравится, для наглядности может быть полезно dt1 ★★ (22.04.11 13:31:27 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от const86 21.04.11 21:19:57 MSK > Поправочка, подсказанная gcc-4.6: for (auto &o: collection) вот, спасибо, то, что надохотя, не лучше ли использовать boost::ptr_vector ... dt1 ★★ (22.04.11 13:44:06 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от dt1 22.04.11 13:31:27 MSK ну это кому как нравится, для наглядности может быть полезно Какую наглядноть даёт получение «сырого» указателя? Begemoth ★★★★★ (22.04.11 14:19:11 MSK) Показать ответ Ссылка
Ответ на: комментарий от dt1 22.04.11 13:44:06 MSK >хотя, не лучше ли использовать boost::ptr_vector ну, собственно, большую часть буста запилили в c++0x TERRANZ ★★★★ (22.04.11 14:45:05 MSK) Показать ответ Ссылка
Ответ на: комментарий от Begemoth 22.04.11 14:19:11 MSK > Какую наглядноть даёт получение «сырого» указателя? разыменовывать проще dt1 ★★ (22.04.11 15:16:22 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от TERRANZ 22.04.11 14:45:05 MSK > ну, собственно, большую часть буста запилили в c++0x ptr_vector не запилили к сожалению dt1 ★★ (22.04.11 15:16:58 MSK) автор топика Ссылка
Ответ на: комментарий от dt1 22.04.11 15:16:22 MSK разыменовывать проще чем raw_ptr->a проще чем smart_ptr->a? Begemoth ★★★★★ (22.04.11 15:19:30 MSK) Ссылка
Ответ на: комментарий от dt1 22.04.11 15:16:22 MSK Или ты про близость исходного кода генерируемому компилятором? Тогда не стоит использовать С++, переносимый ассемблер в этом плане гораздо лучше. Begemoth ★★★★★ (22.04.11 15:21:14 MSK) Показать ответ Ссылка
Ответ на: комментарий от Begemoth 22.04.11 15:21:14 MSK я имею в виду *raw_ptrа еще может понадобиться передавать указатель в несколько функций dt1 ★★ (22.04.11 15:43:12 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от dt1 22.04.11 15:43:12 MSK я имею в виду *raw_ptrтак ведь *smart_ptr а еще может понадобиться передавать указатель в несколько функций так передавать надо умный указатель Begemoth ★★★★★ (22.04.11 16:18:27 MSK) Ссылка