목록게임프로그래밍/STL (10)
bdfgdfg
std::queue std::queue는 FIFO구조를 가지는 Queue 자료구조의 컨테이너 -> FIFO(First In First Out) : 가장 처음에 삽입된 것이 가장 먼저 나온다. std::queue는 내부적으로 deque, list를 기반으로 내부가 구현이 되어있으며 자료구조인 Queue의 기능을 제공한다. -> 디폴트로 deque기반으로 구현. -> std::vector의 경우에는 std::stack에서는 내부 컨테이너로 구현되어있었지만, std::queue의 경우에는 앞에서 제거하는 연산이 느린 vector를 사용하지 않는다. 먼저 std::queue 컨테이너를 사용하기 위해서는 헤더파일을 추가해야 한다. 기본적인 생성방법 1 2 3 4 5 6 // 기본 생성 방식. std::queue ..
std::stack std::stack은 LIFO구조를 가지는 Stack 자료구조의 컨테이너. -> LIFO(Last In First Out) : 마지막에 삽입된 것이 가장 먼저 나온다. 컨테이너 어댑터는 다른 컨테이너 클래스들을 상속받아 특정한 인터페이스를 제공한다. -> 다른 컨테이너와 달리 top, front 등의 함수와 pop(삭제) 함수를 함께 사용하여야만 요소에 접근 가능하다. -> 위와 같은 특징으로 반복자(Iterator)를 제공하지 않고 범위기반 for문의 사용이 불가능하다. std::stack은 vector, deque, list를 기반으로 내부적으로 구현이 되어있으며 자료구조인 stack의 기능을 제공한다. -> 디폴트로 deque기반으로 구현. 먼저 std::stack 컨테이너를 사..
std::deque deque 컨테이너는 시퀀스 컨테이너이며 배열 기반(연속적인 메모리) 기반의 컨테이너. -> deque(double ended queue)는 앞과 뒤에서 삽입과 삭제가 가능한 자료구조. deque 컨테이너는 위 그림과 같이 앞과 뒤에 데이터들이 추가될 수 있는 형태. 또한 데이터 요소를 저장하는 여러개의 메모리 단위를 갖는다. std::vector 컨테이너와 비슷하면서도 가장 큰 차이점이 존재하는데, vector의 경우에는 배열이 가득차면 새로운 메모리 블럭을 만들고 기존의 데이터를 복사한 다음 기존의 메모리 블럭을 부숴버린다. deque의 경우에는 메모리가 가득차도 복사 후 파괴(이사)가 아닌 새로운 메모리 블럭을 하나 더 만들뿐이다. 위 그림처럼 하나의 메모리 블럭에서 요소가 가득..
std::list std::list는 이중 연결 리스트로 선형 구조를 가지는 시퀀스 컨테이너이며 노드 기반으로 데이터를 저장한다. std::vector 컨테이너와는 달리 임의접근 연산자는 지원하지 않지만 push_front, push_pop 같은 기능을 지원한다. 이중 연결 리스트 자료구조를 이해했다면 전혀 어렵지 않다. 먼저 std::list를 사용하기 위해서는 list 헤더파일을 추가해야 한다. 기본적인 생성방법 1 2 3 4 5 6 7 8 // 비어있는 상태의 list 컨테이너를 생성 std::list li; // 0으로 초기화 된 요소 10개를 가진 list 컨테이너를 생성 std::list li2(10); // 5로 초기화 된 요소 10개를 가진 list 컨테이너를 생성 std::list li3..