Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
shared_ptr и большие динамические массивы
|
|||
|---|---|---|---|
|
#18+
MasterZivCEMbВектор - это динамический набор элементов. Допустим, мы храним там значения. Потом берём и делаем shared_ptr на один из элементов, а самому вектору делаем несколько erase(), что будет с созданным shared_ptr? Ты не можешь так делать. Нельзя.Нельзя(т.е. очень плохо), но могу. Поэтому пока не придумал ничего лучше, использую опасные указатели. MasterZivCEMbя сейчас так и делаю, по той же самой причине: у меня shared_ptr на единый кусок памяти, т.е. не может быть такой ситуации, что shared_ptr на массив живой, а кто-то в массиве дохлый. Но сейчас я вообще убрал пока shared_ptr-ы, ссылающиеся на элементы массива, потому что нестыковка :) Хорошо бы иметь некое подобие weak_ptr в таком случае... Ну и объясни , чем shared ptr на массив отличается от shared_ptr на вектор, содержащий элемнты по значению. Ничем, только первое недопустимо (кажется по спецификации), второе -- вполне законно. первое допустимо, в конструкторе shared_ptr<> можно передать указатель и удалятор для него, всё ок же. shared ptr на массив отличается от shared_ptr на вектор тем, что размер массива не меняется, элементы из него не пропадают частично, не добавляются, т.е. создав его, я буду уверен, что он весь на месте, пока я не отпущу указатель. А shared_ptr на вектор никак не управляет самим вектором, набор элементов там может произвольно меняться. И зачем вообще делать shared_ptr на вектор? Его (вектор) можно просто объявить как переменную в классе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2016, 06:36 |
|
||
|
|

start [/forum/topic.php?fid=57&startmsg=39355671&tid=2018373]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 415ms |

| 0 / 0 |
