Haskell에서 진정한 벡터 유형을 구현하려면 어떻게해야합니까? 무언가가 벡터가 되려면 O(1)
랜덤 액세스를 사용하여 메모리에 순차적으로 저장되어야합니다. 그러나 Haskell은 메모리 관리를 숨기고 데이터 유형은 트리를 설명합니다! 그렇다면 이러한 요구 사항을 어떻게 표현할 수 있습니까?
설명
Answer
Haskell의 모든 데이터 유형이 트리는 아닙니다. 함수 또는 Int와 같은 내장 유형도 있습니다. 그중에는 요소에 대한 O (1) 액세스를 제공하는 Array 유형이 있습니다.
GHC와 같은 일부 컴파일러도 제공합니다. unboxed 배열. 메모리를 적게 사용하고 요소 당 액세스가 더 빠르지 만 물론 복잡성은 변경되지 않습니다.
이러한 배열 위에 std::vector
. 예는 벡터 라이브러리입니다.
답변
벡터 패키지에서 Data.Vector.Unboxed
및 Data.Vector.Mutable
를 확인해야합니다.
std::vector
).' / ul>