[Rust] 자료구조 타입들
Vec만 빼고 다 std::collections 모듈에 존재한다.
벡터
길이가 변경되는 동적배열이다.
std::vec 모듈에 존재한다.
길이의 증가나 감소는 맨 뒤에서만 발생한다. 아래는 그 예다.

push로 집어넣은 값은 맨 뒤에서부터 쌓임을 볼 수 있다.
근데 집어넣을 값이 여러개인데 자꾸 저렇게 하나하나 push를 해주는건 아무래도 좀 불편하다.
러스트는 이를 위한 매크로 vec!을 제공한다.

너무 간결해졌다.
당연히 인덱싱도 되고


정렬도 잘 된다.

그렇다.
디큐
c++ stl의 deque에 대응되는것같다.
앞뒤로 즉시삽입이 되면서 인덱싱도 가능하다.
하지만 마찬가지로 쓸일은 별로 없을 것이다.


이진 힙
벡터 기반의 힙이다.
그리고 최대 힙이다..
아래는 간단한 예시다.
push는 집어넣고, pop은 최대값을 뽑아서 옵션으로 반환한다.
peek는 최대값을 보기만 한다.


벡터와의 연동도 잘 되어있다.


힙정렬을 수행한 후 벡터로 반환할 수도 있다.


연결리스트
삽입삭제병합만 빠르고 접근은 느린 그 구조다.
안정적이긴 한데 막상 쓸일은 별로 없다.
간단한 사용례다. 앞뒤로 삽입만 했다.


트리셋
B트리 구조의 집합이다. 다른 언어들에선 보통 RB트리를 쓰는데 희한하게도 혼자 B트리를 주장한다.
쓸일은 별로 없다고 봐도 된다.

찾아보면 집합연산도 있고 한데 뭐 그렇다.
트리맵
트리셋과 같은 B트리 기반이지만, 키와 값의 쌍으로 구성된다.


인덱싱이 되긴 하는데 읽기전용이다.

그렇다.
해시셋
트리셋과 비슷하게 집합을 표현하지만. B트리 대신 해시테이블로 유지한다는게 다르다.

순서가 지멋대로 나온다.
해시맵
트리셋과 비슷하게 키와 값의 쌍으로 표현하지만, 트리 대신에 해시테이블을 쓴다.

그렇다.