본문 바로가기

PROGRAMING LANGUAGE/c++ stl

C++ STL 모음

C++로 프로그램을 짤 때 유용한 STL들을 정리해 본당 ( 계속해서 추가해나갈 예정 )

 

STL( Standard Template Library)에는 STACK, QUEUE와 같은 자료구조나 여러

알고리즘들이 들어가 있어 프로그램을 짤 때나 알고리즘 대회에서도 유용하게 사용된다.

 

< STACK > : 맨 처음에 들어간 데이터가 맨 마지막에 나오는 자료구조 생성

헤더파일 : #include <stack>

stack <int> data :  int 형 데이터를 담을 수 있는 data라는 이름의 스택 생성

data.push(1) : 스택 맨 뒤에 1을 삽입

data.pop() :  스택 맨 뒤에서 데이터 하나를 삭제

data.top() : 스택 맨 뒤에 있는 데이터를 반환

data.size() : 스택에 들어가 있는 데이터의 개수를 반환

data.empty() : 스택에 데이터가 비어 있으면 1을 반환, 데이터가 하나라도 있으면 0을 반환

 

- stack 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <stack>
 
using namespace std;
 
int main() {
 
    stack<int> data; // 스택 생성
 
    data.push(1); // 스택의 맨 뒤에 1 삽입
    data.push(2); // 스택의 맨 뒤에 2 삽입
 
    cout << data.top() << endl// 스택의 맨 뒤 데이터 2 출력
 
    data.pop(); // 스택의 맨 뒤 데이터 2 삭제
 
    cout << data.top() << endl// 스택의 맨 뒤 데이터 1 출력
 
    data.pop(); // 스택의 맨 뒤 데이터 1 삭제
 
    cout << data.empty() << endl// 스택이 비어 있으므로 1출력
 
    data.push(3); // 스택의 맨 뒤에 3 삽입
    data.push(4); // 스택의 맨 뒤에 4 삽입
    data.push(5); // 스택의 맨 뒤에 5 삽입
 
    cout << data.empty() << endl// 스택이 비어 있지않으므로 0출력
    
    cout << data.size() << endl// 스택의 데이터 갯수 3출력
 
    
    return 0;
}
 
 

 

 

< QUEUE > : 맨 처음에 들어간 데이터가 맨 처음에 나오는 자료구조 생성

헤더 파일 : #include <queue>

queue <int> data :  int 형 데이터를 담을 수 있는 data라는 이름의 큐 생성

data.push(1) : 큐 맨 뒤에 1을 삽입

data.pop() :  큐 맨 앞에서 데이터 하나를 삭제

data.front() : 큐 맨 앞에 있는 데이터를 반환

data.size() : 큐에 들어가 있는 데이터의 개수를 반환

data.empty() : 큐에 데이터가 비어 있으면 1을 반환, 데이터가 하나라도 있으면 0을 반환

 

- queue 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <queue>
 
using namespace std;
 
int main() {
 
    queue<int> data; // 큐 생성
 
    data.push(14); // 큐의 맨 뒤에 14 삽입
    data.push(2); // 큐의 맨 뒤에 2 삽입
 
    cout << data.front() << endl// 큐의 맨 앞에 있는 데이터 출력
 
    data.pop(); // 큐의 맨 앞에 있는 데이터 제거
    data.pop(); // 큐의 맨 앞에 있는 데이터 제거
 
    cout << data.empty() << endl// 큐가 비어 있으므로 1출력
 
    data.push(3); // 큐의 맨 뒤에 3 삽입
    data.push(4); // 큐의 맨 뒤에 4 삽입
    data.push(5); // 큐의 맨 뒤에 5 삽입
 
    cout << data.front() << endl// 큐의 맨 앞에 있는 데이터 출력
 
    cout << data.empty() << endl// 큐가 비어 있지 않으므로 0출력
 
    data.pop(); // 큐의 맨 앞에 있는 데이터 제거
    
    cout << data.size() << endl// 큐안에 들어 있는 데이터의 갯수 출력
 
    return 0;
}
 

 

 

<VECTOR> : 데이터의 삽입과 삭제는 맨 위에만 가능하지만 기존 배열 처럼 모든 원소에 접근이 가능한 동적 배열 생성

헤더 파일 : #include <vector>

vector <int> data : data라는 이름의 int 형 데이터를 담을 수 있는 vector 생성

vector<int> data(10) : vector을 미리 10개의 index를 할당해 놓은 체로 생성(할당된 공간안애는 전부 0으로 초기화)

vector<int> data(10,2) : vector을 미리 10개의 index와 모든 할당된 index 안에 2를 할당해 놓은 체로 생성

data.push_back(1) : vector의 맨 뒤에 1을 삽입

data.pop_back() : vector의 맨 뒤에 있는 데이터를 삭제

data.front() : vector의 맨 앞에 있는 데이터 반환

data.back() : vector의 맨 위에 있는 데이터 반환

data.empty() : vector에 데이터가 비어있으면 1반환, 데이터가 하나라도 있으면 0 반환

data.size()  : vector안에 들어가 있는 데이터의 개수를 반환

data.resize(4) : vector 의 전체 size를 4로 제설정 하면서 모든 index안의 데이터들을 0으로 초기화

data.resize(4,1) : vector 의 전체 size를 4로 제설정 하면서 모든 index안의 데이터들을 1로 초기화

data.clear() : vector의 크기를 0으로 설정

 

- vector 예제