У меня есть описание структуры данных, в которой я нуждаюсь, и я хочу ее реализовать с использованием неизменяемых структур данных. Я пытаюсь определить ... есть ли там существующая структура данных, которая будет поддерживать то, что я пытаюсь сделать здесь, или мне нужно создать ее, - и если мне нужно ее создать, что бы это было хорошо место для запуска (строительные блоки)?F # Постоянная переменная размерная структура данных окна
У меня есть постоянный поток входящих значений определенного типа. Я хочу добавить их в постоянную/неизменяемую структуру данных, чтобы сохранить их историю, и в каждом добавлении он просмотрит историю и определит, будет ли удален один или несколько самых старых элементов (например, если история> a определенная длина или значение имеет определенное свойство).
Списки связаны друг с другом списками, не так ли? Таким образом, доступ и удаление на хвосте были бы очень неэффективными, так что это не сработало бы хорошо. Я действительно не считал себя готовым с тех пор, как предположил, что он был неупорядоченным (глупым мной). Но упорядоченный набор ... правильно, это, вероятно, выполнит эту работу. Кроме того, каждый новый всегда будет добавлен в голову. И если он использует двоичные деревья, это означает, что он просто окажется двусвязным списком и будет очень неэффективным для моего использования, так как удаление с конца связано с копированием всех узлов. – mentics
@taotree: внутренняя реализация 'Set <'a>' является красно-черным деревом, поэтому он поддерживает очень эффективный O (lg n) для произвольного доступа, вставки и удаления. Поскольку дерево сбалансировано, оно не превращается в связанный список и не требует копирования всего дерева. – Juliet
Хорошо, я видел это: http://msdn.microsoft.com/en-us/library/ee353619.aspx и он сказал бинарное дерево, и я думал, о, о ... , но потом я увидел самое нижнее из этого: http://en.wikibooks.org/wiki/F_Sharp_Programming/Sets_and_Maps правое ... красно-черное дерево = работоспособность. Microsoft должна быть более конкретной в своем документе. Спасибо! – mentics