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