STL정리

*가장 많이 사용하게 될 것들부터 정리할것이다.

Stack

Stack의 선언에 두 개의 인자가 필요한 것이 기본이다. 하나는 stack에 담길 원소의 타입이며, 다른 하나는 담는데 사용할 컨테이너의 종류이다. Stack은 컨테이너로 vector나 deque를 가장 많이 사용하고, list도 컨테이너로 사용할 수 있다고 한다. Deque를 사용하면 속도가 빠르고, vector를 사용하면 크기가 작아진다고 한다. 다음은 stack의 선언예제이다.

stack<int, vector<int>> s0;

stack<int> s1;
stack<int, list<int>> s2;

deque<int> d = { 1,2,3,4,5 };
stack<int> s3(d);

stack에서 사용하는 인터페이스는 크게 두 가지이다. push()와 pop()이 그것이다. 하지만 나머지 함수들도 알아놓으면 유용할 것 같다.

stack.push(x); // 요소를 스택에 삽입한다.
stack.pop(); // top에 있는 요소를 빼낸다.
stack.size(); // 스택에 있는 요소의 총 개수이다.
stack.empty(); // 스택이 비어있는지 알아본다.
stack.emplace(x); // 데이터를 top에 넣는다.
stack.top(); // top에 있는 데이터를 리턴한다.
stack.swap(); // 두 스택 내용을 바꾼다.


Queue

Queue는 한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 뺄 수 있는 자료구조. 먼저 넣는 것이 가장 먼저 나오기 때문에 FIFO라고 함. 스택과 반대의 개념이다. 운영체제 코드에서 많이 사용되며 주로 스케쥴링 같은 분야에서 사용된다. 즉 대기열을 구현하기 위한 자료형이기도 하다. STL상에서 사용할 때는 queue헤더를 선언해서 사용한다. 평소 이 Queue라는 자료형은 배열의 인덱싱을 통해 직접 구현하여 많이 사용했고, BFS이론에서 주 역할을 담당했지만, STL에서 주어지는 것을 사용하면 훨씬 더 생산성이 높아질 것이다.

Queue.push(x) : 삽입
Queue.pop() : 가장 먼저 삽입한 데이터 삭제
Queue.front() : 가장 앞에 있는 자료를 보는 연산
Queue.back() : 가장 뒤에 있는 자료를 보는 연산
Queue.empty() : 큐가 비어있는지 보는 연산
Queue.size() : 큐에 저장되어 있는 자료의 개수를 알아보는 연산


Deque

큐와는 거의 동일하지만 양 끝에서만 자료를 넣고 양 끝에서 뺄 수 있는 자료구조를 말한다. Deque는 Double-ended queue의 약자이다.
아직은 어디에 사용할지 감이 오지는 않는다.

Deque.push_front(x) : 덱의 앞에 자료를 넣는다.
Deque.push_back(x) : 덱의 뒤에 자료를 넣는다.
Deque.pop_front() : 덱의 앞에서 자료를 뺀다.
Deque.pop_back() : 덱의 뒤에서 자료를 뺀다.
Deque.front() : 덱의 앞에 있는 자료를 본다.
Deque.back() : 덱의 뒤에 있는 자료를 본다.

results matching ""

    No results matching ""