Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Общие темы > Болтовня

Болтовня Разговоры на любые темы (думайте, о чем пишите)

Ответ
 
Опции темы
Старый 13.04.2016, 07:27   #31
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")

Сообщение от h1dd3n Посмотреть сообщение
в плюсах можно получать из map то чего там нет и никогда не было ?
Эксепшен считается?
Недавно юзал map, в доках написано, что при обращении к несуществующей связке KeyPair кидается эксепшен. Что за хрень? Зачем сносить очередь выполнения эксепшеном из-за того, что я обратился по несуществующему ключу?

Проверял Map.FindKey-ем, который выдает итератор, который сравнивал с Map.end().
Ну вообще не удобно на самом деле тут вышло.

в С# можно обратится по несуществующему ключу и получить null для объектов.
https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 13.04.2016, 10:24   #32
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")

Ещё какие-то _ptr , которые работают непонятно как и и с бубнами, главное работают?да и как вообще указатель может иметь разный вид, он же число, адресс в памяти, или концепции переменились уже давно-давно?

UPD. Ещё одна из 'удобных' оберток над числом
Ты бы хоть почитал про них для начала.

Вкратце unique_ptr освобождает память при выходе из области видимости\в деструкторе\ при выходе из приложения.

shared_ptr позволяет разделять владение указателем между разными участками приложения, и когда на сырой указатель больше никто не ссылается - он удаляется вместе с последним shared_ptr владеющим им. Очень удобная штука для управления ресурсами.

weak_ptr устраняет циклические зависимости, когда в объекте А есть shared_ptr<B>, а в объекте B есть shared_ptr<A>. Помимо этого этим указателем удобно проверять наличие ресурса, и загружать его по мере необходимости.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (13.04.2016)
Старый 13.04.2016, 10:51   #33
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")

в плюсах можно получать из map то чего там нет и никогда не было ?
можно получать нуль.
типа

type value = mapa[key]; // один лукап
use(value);
if (value!=NULL)...
-----

шарпик:

type value = mapa[key]; // слови ошибку, если key нет
-----
if (mapa.ContainsKey(key)) { // первый лукап
type value = mapa[key]; // повторный лукап. зачем?
use(value);
...
} else {
use(null);
}
работает, но медленно

-----
type value = 0;
if (mapa.TryGetValue(key, out value)) {
use(value);
...
} else {
use(null);
}
работает, но некрасиво
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 13.04.2016, 11:56   #34
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")

А если я в Dictionary и хочу хранить нулль?
Тогда получается двусмысленность: либо там нулль из-за того, что нет такого ключа, либо нуль потому что я его туда положил.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Andvrok (13.04.2016), h1dd3n (13.04.2016), Mr_F_ (13.04.2016), Randomize (13.04.2016), St_AnGer (13.04.2016), Taugeshtu (13.04.2016)
Старый 13.04.2016, 12:29   #35
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")

Подхвачу мысль, у меня были ситуации, когда нужно было разграничивать отсутствие ключа и наличие ключа без значения.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
h1dd3n (13.04.2016)
Старый 13.04.2016, 19:15   #36
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")

Сообщение от ABTOMAT Посмотреть сообщение
А если я в Dictionary и хочу хранить нулль?
Тогда получается двусмысленность: либо там нулль из-за того, что нет такого ключа, либо нуль потому что я его туда положил.
Плюсую.
А еще если немного поизучать C#/CLR, то обнаружится что типы бывают не только reference type (object, List, Bitmap и т.д., те которые хранятся в куче), но и value type (это те которые лежат на стеке). Думаете проблема "сохранил ли я null, или это null потому что там ничего не было" такая острая? Пример еще более проблемный:
Dictionary<string, bool> settings = settingsManager.GetSettings();

if (settings["setting1"]) {
    SaveSomething();
}
settings - словарь настроек в виде чекбоксов (да/нет)
В этом примере что должен вернуть словарь, если ключа setting1 нет и никогда не было? true? false? А вот и хер его знает. Поэтому такое поведение с исключением и существует. Dictionary - коллекция общего назначения, поэтому ее старались сделать так чтобы подходила к любым ситуациям в равной степени.
К слову, есть коллекции где поведение "вернуть null, если даже ключа нет" является приемлемым. Например, в ASP NET Session (по сути, тоже словарь).

И вообще, если тебе так нужно чтобы словарь возвращал значение по умолчанию, в случае отсутствия ключа - то взял бы да написал сам, там кода 10 строк один раз написать: https://dotnetfiddle.net/GXdtAS, для reference типов будет возвращать null, для value типов значение по умолчанию (для int 0, для bool false и т.д.)
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо h1dd3n за это полезное сообщение:
ABTOMAT (13.04.2016), Andvrok (13.04.2016)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:05.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com