LioneNET: Ни разу не делал виджетов. может там какие-то есть особенности, не знаю.
Если так написать, тоже не работает?
import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Максим: В ширину ищется "мгновенно", но сжирает кучу памяти. Не помню, какой там рассчитать память для худшего случая. Допустим N^2 * размер_хранимого_элемента (это если из каждой вершины в каждую перейти можно). Если есть веса, то можно не все рёбра проверять, а только наиболее подходящие. Ну и если поиск вести сразу и из А и из Б, то площадь покрытия графом будет вдвое меньше, чем если только из А искать (памяти меньше зажрёт).
Dark_Knight: Потому что я не догадался поискать именно книги.)
Мне вот эта статья понравилась, довольно хорошо разжёвано. Но там для 2D игр и весьма специфично описано. pixelnest.io/tutorials/2d-game-unity
> При поиске в ширину сразу все варианты рассматриваешь
Как раз чтобы исключить вот такие неприятные ситуации, которые почти наверняка при поиске в глубину возникнут.
Максим: От точки А ищется ближайшая ключевая точка. Потом от этой точки следующая и так до точки Б.
При поиске в ширину сразу все варианты рассматриваешь, при поиске в глубину по одному находишь и можно на не оптимальном прерваться.
Где я был не прав?
Армянское Радио: Так я же хитрый! Поэтому и написал auto_ptr, а не smart_ptr. auto_ptr это "синоним" scope_ptr, так что никакой семантики копирования.
Я абсолютно с вами согласен, что умные указатели не нужно пихать повсюду. Я категорически не согласен, что умный указатель это вредный совет. Отказ от умных указателей и прочих плюшек это преждевременная оптимизация. Если я могу что-то не делать, я этого не делаю. Если могу заставить делать компилятор что-то вместо меня - я это делаю.
Армянское Радио: Уважаемое Армянское Радио, приведите, пожалуйста, хотя бы один пример, когда оверхед от auto_ptr превышает пользу он его использования? Перефразирую. Чем вызов delete отличается от вызова delete в заинлайненом деструкторе? Я сам могу ответить, что ничем, но вдруг...
Армянское Радио: Нет. Если ты не умеешь нормально пользоваться умными указателями, то это исключительно твои проблемы. Может ещё std::vector не нужно использовать, вместо T* = new T[xxx] ?
yanchumak: Обнулять банально удобно. Точнее, даже не обнулять, а записывать туда удобный мусор. Какую-нибудь удобночитаемую константу, например 0xDEADBEEF. Таким образом можно различить указатель, которому никогда не было присвоено значение от указателя, который был удалён. Проверять указатель на ноль перед вызовом delete смысла нет, потому что delete в первую очередь сам проверяет указатель на ноль.
А ещё лучше используй smart_ptr и забудь о delete.
Михаил Палагин: Не ставь антивирус, например.
Я как-то в приступе паранои лазил по интернету исключительно из виртуальной машины с 98 виндой, а все загрузки шли в сетевую папку. Было очень мило, когда вирус жаловался на устаревшую версию браузера и просил обновить эксплорер до версии поновее.)
yanchumak: Проверять перед удалением не нужно, delete сам проверяет, что указатель не нуль. А вот обнулять очень нужно. А ещё лучше, не использовать голый указатель.
Если так написать, тоже не работает?
import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);