Автор Тема: обучение управлению памятью  (Прочитано 9110 раз)

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: обучение управлению памятью
« Ответ #15 : Февраль 11, 2012, 05:13:26 pm »
А что имел ввиду Валерий   :) :) :) :) - давайте спросим у него
Я увидел задачу, напоминающую учебную, и предоставил схему её решения. Времени я на неё потратил больше, чем Vlad, но недостаточно, чтобы уверенно сказать, что она работает. Для этого понадобилось бы ещё некоторое количество времени. Ещё несколько человек предоставили свои варианты решения. После этого началось решение задачи "что лучше". Я не называю своё решение лучшим. Я согласен, что зачастую следует использовать стандартные библиотеки. Но выбор лучшего алгоритма - это другая задача.
Поскольку, как я считаю, целью было получение схемы, то я не сделал ошибок. Вы сказали, что мои ошибки что-то показывают. Но в исходной задаче решение было у меня в голове, а код - это реплика, с помощью которой я хотел передать решение. В устной речи бывают оговорки, и если собеседник замечает неточность, то он акцентирует на ней внимание, чтобы говорящий добавил в свои слова определённость.
Поскольку задача имела черты учебной, то я решил немного по этому поводу высказаться. Почему, собсна, sort() лучше? С чего Vlad взял, что решением будет она, а не "i++; println();"? Потому-то она и учебная, что ученик должен понять, что здесь будет решением. А отвeт "правильно будет использовать sort()" или "... подсчётом", как я уже говорил - это решение другой задачи. Важной для инженера, да, но не сейчас.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: обучение управлению памятью
« Ответ #16 : Февраль 12, 2012, 03:06:08 pm »
Да, и еще - когда начинаешь думать о том как освободить память волей или не волей приходится нарисовать в голове общую схему что с чем у тебя в программе связано. И как устроено. Что позволяет много лучше и яснее понять собственную же программу. Очень полезное упражнение.

Кстати да, подтверждаю. При всей доступности в С++ смартпоинтеров с подсчетом ссылок (shared_ptr, прямой аналог ссылок языков с GC) в дело, как правило, идут более специализированные смартпоитеры - отражающие семантику владения (scoped_ptr) и передачи владения (auto_ptr). Именно потому, что дают лучшее понимание что, откуда и куда. Например, классическая фабрика всегда будет возвращать auto_ptr.