STL Container - Container Adapter

간결함과 λͺ…λ£Œμ„±μ„ μœ„ν•΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œν•œν•œ μ‹œν€€μŠ€λ‚˜ μ—°κ΄€ μ»¨ν…Œμ΄λ„ˆμ˜ λ³€ν˜•μ΄λ‹€. 반볡자λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ STL μ•Œκ³ λ¦¬μ¦˜μ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

stack

μŠ€νƒμ€ vector 클래슀의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œν•œν•˜μ—¬, μ „ν˜•μ μΈ μŠ€νƒ λ©”λͺ¨λ¦¬ ꡬ쑰의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€.

#include <stack>

ꡬ쑰

멀버 ν•¨μˆ˜

μ„€λͺ…

empty()

μŠ€νƒμ΄ λΉ„μ–΄ 있으면 trueλ₯Ό, λΉ„μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ falseλ₯Ό λ°˜ν™˜ν•¨.

size()

μŠ€νƒ μš”μ†Œμ˜ 총 개수λ₯Ό λ°˜ν™˜ν•¨.

top()

μŠ€νƒμ˜ 제일 상단에 μžˆλŠ”(제일 λ§ˆμ§€λ§‰μœΌλ‘œ μ €μž₯된) μš”μ†Œμ— λŒ€ν•œ μ°Έμ‘°λ₯Ό λ°˜ν™˜ν•¨.

push()

μŠ€νƒμ˜ 제일 상단에 μš”μ†Œλ₯Ό μ‚½μž…ν•¨.

pop()

μŠ€νƒμ˜ 제일 상단에 μžˆλŠ” μš”μ†Œλ₯Ό μ‚­μ œν•¨.

예제

#include <iostream>
#include <stack>

using namespace std;

int main(void){

    stack<int> st;
    int decimal = 123;

    do {
        st.push(decimal % 2);
        decimal /= 2;
    }while(decimal);

    while(!st.empty()){
        cout << st.top();
        st.pop();
    }
    return 0;
}

queue

queueλŠ” deque 클래슀의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œν•œν•˜μ—¬, μ „ν˜•μ μΈ 큐 λ©”λͺ¨λ¦¬ ꡬ쑰의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€.

#include <queue>

ꡬ쑰

멀버 ν•¨μˆ˜

μ„€λͺ…

empty()

큐가 λΉ„μ–΄ 있으면 trueλ₯Ό, λΉ„μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ falseλ₯Ό λ°˜ν™˜ν•¨.

size()

큐 μš”μ†Œμ˜ 총 개수λ₯Ό λ°˜ν™˜ν•¨.

front()

큐의 맨 μ•žμ— μžˆλŠ”(제일 λ¨Όμ € μ €μž₯된) μš”μ†Œμ— λŒ€ν•œ μ°Έμ‘°λ₯Ό λ°˜ν™˜

back()

큐의 맨 뒀에 μžˆλŠ”(제일 λ‚˜μ€‘μ— μ €μž₯된) μš”μ†Œμ— λŒ€ν•œ μ°Έμ‘°λ₯Ό λ°˜ν™˜

push()

큐의 맨 뒀에 μš”μ†Œλ₯Ό μ‚½μž…

pop()

큐의 맨 μ•žμ˜ μš”μ†Œλ₯Ό μ‚­μ œ

예제

#include <iostream>
#include <queue>

using namespace std;

int main(void){

    int n;

    cin >> n;

    queue<int> que;
    que.push(0);
    que.push(1);

    for(int i=2; i<n; i++){
        int tmp = que.front();
        cout << tmp << ' ';
        que.pop();
        que.push(tmp + que.front());
    }

    return 0;
}

priority queue

μš°μ„ μˆœμœ„ νλŠ” 큐와 달리 맨 μ•žμ˜ μš”μ†Œλ‘œ κ°€μž₯ λ¨Όμ € μ €μž₯된 μš”μ†Œκ°€ μ•„λ‹Œ, κ°€μž₯ 큰 값을 μ§€λ‹Œ μš”μ†Œκ°€ μœ„μΉ˜ν•˜κ²Œλœλ‹€. μš°μ„ μˆœμœ„ νλŠ” vector 클래슀λ₯Ό 기반으둜 ν•œλ‹€.

ν•˜μ§€λ§Œ μ‚¬μš©ν•  수 μžˆλŠ” λ©€λ²„ν•¨μˆ˜λŠ” 큐 μ»¨ν…Œμ΄λ„ˆμ™€ κ°™λ‹€.

#include <queue>

예제

#include <iostream>
#include <queue>

using namespace std;

int main(void){

    priority_queue<int> pq;

    pq.push(10);
    pq.push(30);
    pq.push(100);
    pq.push(20);

    while(!pq.empty()){
        cout << pq.top() << ' ';
        pq.pop();
    }
    cout << endl;
    return 0;
}

μ°Έμ‘°

Last updated

Was this helpful?