Pull to refresh

Comments 16

Все же хешмап по дефолту unordered, а не потому, что там "fastrand" воткнули.
Все, что "ordered", например, как в PHP, говорит лишь о том, что у нас не одна структура (хешмап), а две (хешмап отдельно, связанный список отдельно).

UFO just landed and posted this here

вы хотели сказать согласно спецификации unordered, или что значит "по дефолту"?
Насколько я помню, в начальной реализации map в Go обход был "упорядоченный" (то есть, разработчики Go просто не парились об этом), но пришлось поменять (добавили fastrand для определния начала), чтобы пользователи не полагались на упорядоченность.

Я хотел сказать, что сама идея хешмепа не гарантирует никакой упорядоченности.


Не сразу понял, что автор имел в виду не упорядоченность хешмапа, а всего лишь сохранение порядка итерирования в неизменяемом хешмапе.

Спасибо, весьма занимательный пост, в особенности, наверное, для тех, кто ещё не прошёлся по указанным граблям самостоятельно.


Вообще, занятно вышло, что в языке без дженериков на уровне компилятора дженерики как бы даже и существуют — []T, map[K]V — с ограничениями на K и chan T.

Невозможно создать 2 переменные с 1 адресом, как в С++ например

Теперь мне даже интересно, как по мнению автора в плюсах можно создать две переменные, имеющие один адрес, без насилия над компилятором

Ну один юнион — одна переменная с одним адресом, просто разными интерпретациями содержимого

Да, формулировка не очень получилась, соглашусь. Имелось ввиду, что нельзя создать именно ссылку, которая является лишь другим именем объекта, но по которой можно менять последний.
UFO just landed and posted this here
Подскажите, не понял в чем отличие:
Маппинга: map(key) → value
Поиска: lookup(key) → value

И там и там же вроде поиск значения по ключу?
В том, что это разные функции) Маппинг — это поставить в соответствие какому-то ключу какое-то значение (в го будет m[key] = value), а поиск — это получить по ключу значение, которое к нему примаплено ранее (v = m[key] и v = value).
Тогда в чем отличие маппинга, от вставки?
В смысле. Маппинг — это абстракция, обозначающая, что чему-то соответствует что-то (в нашем случае ключу значение). Вставка обозначает способность положить что-то куда-то (в нашем случае пару ключ-значение в мапу), при вставке происходит маппинг.
Only those users with full accounts are able to leave comments. Log in, please.