Не нашел в Erlang соответствующего типа данных. Как лучше выйти из
положения?
Задача примерно такая: на вход подается текст, на выходе надо получить
сколько раз каждый символ встречался в тексте.
То есть, условный код (как я его вижу):
while(s = get_next_char() != eof) {
if (my_hash.exists(s)) {
value = my_hash.lookup(s);
my_hash.insert(s, value + 1);
}
else
my_hash.insert(s, 1);
}
Какую структуру данных использовать в Erlang? Можно конечно создать
список, где каждым нечетным элементом будет ключ, а четным значение — но уж
больно громоздким будет решение.
Еще можно создать два списка — ключей и значений, но открытым остается
вопрос о производительности такого решения. Ведь для каждого символа в
тексте я практически перестраиваю весь список.
DAS>Не нашел в Erlang соответствующего типа данных. Как лучше выйти из DAS>положения?
По-русски это ассоциативные массивы будут вроде как (а хэшем называют результат вычисления хэш-функции).
В эрланге есть dictionary() (ну и ordered_dictionary() иногда требуется), вполне вроде широко употребимый.
Еще встречал название мепы (Maps). Хотя согласен, что ассоциативные
массивы звучит лучше.
> В эрланге есть dictionary() (ну и ordered_dictionary() иногда требуется), вполне вроде широко употребимый.
DAS>>Не нашел в Erlang соответствующего типа данных. Как лучше выйти из DAS>>положения?
К>По-русски это ассоциативные массивы будут вроде как (а хэшем называют результат вычисления хэш-функции). К>В эрланге есть dictionary() (ну и ordered_dictionary() иногда требуется), вполне вроде широко употребимый.
Плюс еще proplists, которые используются еще чаще, по-моему
Здравствуйте, DemAS, Вы писали:
DAS>"Курилка" <1546@users.rsdn.ru> writes:
>> Map это из математики (из теории множеств), по-русски соотвествие (оно же >> бинарное отношение).
DAS>А еще это название ассоциативных массивов в языке программирования X++.
Здравствуйте, DemAS, Вы писали:
DAS>"Курилка" <1546@users.rsdn.ru> writes:
>> DAS>А еще это название ассоциативных массивов в языке программирования X++. >> Именно соответствие
DAS>Извини, не понял.
Знак вопроса почему-то не поставил
Просто была "претензия" к слову "мепы", которое для русскоязычного человека никакой смысловой нагрузки не несёт (в отличии от тех же хэшей).
Кстати хэш-массивы — это лишь 1 вариант реализации ассоциативных массивов (но об этом ты, я думаю, в курсе).
DAS>Если я могу написать так:
"Курилка" <1546@users.rsdn.ru> writes:
> Кстати хэш-массивы — это лишь 1 вариант реализации ассоциативных массивов (но об этом ты, я думаю, в курсе).
Наверное.
Если исходить из определения, что ассоциативный массив это структура
данных, позволяющая хранить пары значений — то вариантов реализации может
быть множество. Начиная от обычного массива и заканчивая деревьями и хеш-таблицами.
> А ты сомневаешься чтоль?
Ну, после твоего предыдущего сообщения даже засомневался.
Здравствуйте, DemAS, Вы писали:
DAS>"Курилка" <1546@users.rsdn.ru> writes:
>> Кстати хэш-массивы — это лишь 1 вариант реализации ассоциативных массивов (но об этом ты, я думаю, в курсе).
DAS>Наверное. DAS>Если исходить из определения, что ассоциативный массив это структура DAS>данных, позволяющая хранить пары значений — то вариантов реализации может DAS>быть множество. Начиная от обычного массива и заканчивая деревьями и хеш-таблицами.
Ммм, наверное?
Простой пример — явовский AbstractMap, среди наследников (если откинуть лишнее) есть 2 разных варианта: HashMap и TreeMap.