Russian Qt Forum
Ноябрь 23, 2024, 15:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как создать массив "интеллектуальных" указателей из С++11?  (Прочитано 5845 раз)
yarick
Гость
« : Январь 17, 2013, 08:49 »

Читаю книгу "Прата - С++ лекции и упражнения", главу про указатели
Там сказано, что unique_ptr позволяет работать с массивами указателей, объявляем
Код:
unique_ptr<int[]> pIntAutoPtr1(new int(100));
Но вот размер массива в [] не указать... И где его указывать, как  с ним работать?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Январь 17, 2013, 09:09 »

Читаю книгу "Прата - С++ лекции и упражнения", главу про указатели
Там сказано, что unique_ptr позволяет работать с массивами указателей, объявляем
Код:
unique_ptr<int[]> pIntAutoPtr1(new int(100));
Но вот размер массива в [] не указать... И где его указывать, как  с ним работать?

Код
C++ (Qt)
typedef unique_ptr<my_obj> my_obj_ptr;
 
std::vector<my_obj_ptr> objs( num_objs );
 
my_obj_ptr objs[ num_objs ];
 
« Последнее редактирование: Январь 17, 2013, 11:06 от Old » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #2 : Январь 17, 2013, 16:00 »

Читаю книгу "Прата - С++ лекции и упражнения", главу про указатели
Там сказано, что unique_ptr позволяет работать с массивами указателей, объявляем
Код:
unique_ptr<int[]> pIntAutoPtr1(new int(100));
Но вот размер массива в [] не указать... И где его указывать, как  с ним работать?

Например так:
Код
C++ (Qt)
const unsigned Num = 100;
unique_ptr<int[]> pIntAutoPtr1(new int[Num]);
 
pIntAutoPtr1[0] = 123;
...
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #3 : Январь 17, 2013, 16:03 »

Читаю книгу "Прата - С++ лекции и упражнения", главу про указатели
Там сказано, что unique_ptr позволяет работать с массивами указателей, объявляем
Код:
unique_ptr<int[]> pIntAutoPtr1(new int(100));
Но вот размер массива в [] не указать... И где его указывать, как  с ним работать?

Например так:
Код
C++ (Qt)
const unsigned Num = 100;
unique_ptr<int[]> pIntAutoPtr1(new int[Num]);
 
pIntAutoPtr1[0] = 123;
...
 


Да, и кстати, из всех умных указателей так можно делать только с unique_ptr
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Январь 17, 2013, 16:17 »

Например так:

...работать с массивами указателей...
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #5 : Январь 17, 2013, 17:08 »

Например так:

...работать с массивами указателей...


Это да.. Но судя по его коду, скорее всего ТС неправильно сформулировал вопрос(
Или не до конца разобрался чего там в лекциях у Прата понаписано)
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #6 : Январь 17, 2013, 17:17 »

Например так:

...работать с массивами указателей...


и потом, для массива умных указателей, логичнее использовать shared_ptr, а не unique_ptr..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #7 : Январь 17, 2013, 17:27 »

и потом, для массива умных указателей, логичнее использовать shared_ptr, а не unique_ptr..
Оно то конечно логичней, но мы то не знаем что там старик Прат пишет. Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.146 секунд. Запросов: 23.