파이썬의 경우에는 기본적으로 제공되는 자료형이나 명령어 등이
겹치는 놈들이 별로 없는데 c++에는 상황에 맞게 쓸 수 있는 가짓수가 너무 많다.
-----------------------------------
c++에서 배열에 문제점은 메모리의 크기를 미리 할당해야 했다는 거다.
fickle큐브2를 만들때도 각각의 큐브들의 정보값을 담을 MPointArray클래스의 배열을 만드는데
배열 크기를 미리 설정해 놔야 해서
전처리기로 플러그인의 최대 큐브값을 미리 설정해 놓고 작성을 했었었다.
c++의 기본적인 문법만 훑은 상태에서 작업을 해서 배열은 미리 크기를 정해놔야 한데서
그냥 그런가 보다 했는데 알고보니 linked list도 있고 stl도 있고 뭐가 졸라 많다.
vector는 배열과 비슷한 형식을 가지고 있는데 미리 크기를 정해 놓을 필요도 없고 각 원소들의 자료형도 다 다르게 넣을 수 있다고 한다.
그리고 속도마저 배열보다 빠르기도 하다니,, 또 공부를 해야할 듯.
Linked List
배열의 크기를 처음부터 미리 설정해야 하는것은 이유는 이렇다.
배열의 마지막에 새로운 원소를 추가하여 배열의 크기를 늘린다고 가정했을때 그 마지막 원소의 다음 메모리가
비어있을지 확신을 할 수 없기 때문이다.
링크드 리스트의 개념은 원소 a는 b랑만 b는 a와 c랑만 연결되어 있기 때문에 메모리를 어느곳에 놓고 있어도
상관없게 된다.
링크드 리스트에서 하나의 원소가 뒤쪽 원소만 가리키게 할 수도 있다. 이렇게 되면 앞에서 부터 정방향 탐색만
가능하게 되지만 그만큼 자원을 아낄수가 있다.
이처럼 한쪽방향으로만 연결되어 있는 방식을 단일 링크드 리스트
양쪽방향으로 연결되어 있는 방식을 이중 링크드 리스트라고 한다.