LINUX.ORG.RU

std::map и его member_types


0

1

Смотрю на описание member_types-ов std::map, и вижу там при объявлении std::map<Key,T> следующее:

mapped_type = T

value_type = std::pair<const Key,T>

Мне одному кажется, что по хорошему должно быть вовсе value_type = T и, соответственно, mapped_type = std::pair<const Key,T>? В чём логика нынешней структуры std::map?

Ответ на: комментарий от runtime

> Сверься со стандартом

В стандарте тоже «неправильное» описание map-овских member_type-ов. Мне просто непонятно, какой логикой руководствовались те, кто value_type присвоили пару, а mapped_type — значение.

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от Reset

> value это то, что хранится в узле

В Value, значит, хранится и const Key, и ещё какой-то Value? Так получается по этой логике.

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от one_more_hokum

map это контейнер, хранящий пары и соответственно value это вся пара. почему ты хочешь, чтобы value был вторым элементом пары, а не первым?

Reset ★★★★★
()
Ответ на: комментарий от Reset

> почему ты хочешь, чтобы value был вторым элементом пары, а не первым?

Потому, что первый элемент пары — Key. Не?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от Reset

> а второй mapped_type :)

Не, второй — Value. А mapped_type (по моим домыслам) хорошо укладывается в пару <Key,Value>. Вот такЪ. :-)

one_more_hokum ★★★
() автор топика

Это STL, там все через жопу.

Вообще, даже и контейнер такого рода назвать Map - это надо укуритьсяотравиться рыбой додуматься.

Love5an
()
Ответ на: комментарий от one_more_hokum

key отображается в mapped value, а тип у mapped value соответственно mapped_type. Просто value это элемент множества пар. Всё логично, правильно и, более того, совместимо со всеми остальными stl-контейнерами.

Reset ★★★★★
()
Ответ на: комментарий от Love5an

Одно из значений слова map - отображение. Поэтому ничего необычного в таком названии не вижу. То, что в лиспе map означает не контейнер, а операцию это проблемы лиспа.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Операция map не только в лиспе так называется.

Точно как и ассоциативные массивы называются Hash-table или, на худой конец, Dictionary. Но никак не Map.

Love5an
()
Ответ на: комментарий от Love5an

Ассоциативные массив map'ом не только в stl называется.

ассоциативные массивы называются Hash-table

Это уже указывает на конкретную реализацию. map в stl'е это не hash-table.

Reset ★★★★★
()
Ответ на: комментарий от Love5an

map потому как value отображается на key. Как раз по-моему это более удачное название чем всякие Dictionary. Вам лишь бы обоср... всё что не лисп.

Booster ★★
()
Ответ на: комментарий от anonymous

>Бери пхп и не вы******ся.

В пхп ключами могут быть только числа и строки, уныло.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.