ABOUT ME

μ•Œκ³ λ¦¬μ¦˜, μ½”λ”©ν…ŒμŠ€νŠΈ 용 λΈ”λ‘œκ·Έμž…λ‹ˆλ‹Ή~ 기술 λΈ”λ‘œκ·ΈλŠ” https://velog.io/@ows3090 에 μž‘μ„±ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

Today
Yesterday
Total
  • [Data Stucture] Queue (큐) μ‚¬μš©λ²•
    Data Structure 2020. 2. 22. 17:57
    λ°˜μ‘ν˜•
    • C++ STL 쀑 ν•˜λ‚˜μΈ Queue μ‚¬μš©λ²•μž…λ‹ˆλ‹€.

    Queue

    • QueueλŠ” FIFO ( First In, First Out )으둜 μ„€κ³„λœ container μž…λ‹ˆλ‹€.

    • μ œλ„ˆλ¦­ν•˜κ²Œ κ΅¬ν˜„λ˜μ–΄ μžˆμ–΄μ„œ μ–΄λ– ν•œ μ›μ†ŒλΌλ„ 멀버 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μΆ”κ°€, μ‚­μ œκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

    • #include < queue > λ₯Ό μ„ μ–Έν•˜μ—¬μ•Ό queue 라이브러리λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.



    κΈ°λ³Έ ν•¨μˆ˜

    empty ( )

    • 큐가 λΉ„μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” ν•¨μˆ˜
    • if queue is empty, then return 1 else 0

    size ( )

    • 큐의 크기λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
    • return size_type (unsigned int)

    front ( )

    • 큐의 κ°€μž₯ μ•žμ— μžˆλŠ” μ›μ†Œλ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
    • return reference next element

    back ( )

    • 큐의 κ°€μž₯ λ‚˜μ€‘μ— λ“€μ–΄μ˜¨ μ›μ†Œλ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
    • return reference last element

    push ( element )

    • 큐에 μ›μ†Œλ₯Ό μΆ”κ°€ν•˜λŠ” ν•¨μˆ˜

    pop ( )

    • 큐의 κ°€μž₯ μ•žμ— μžˆλŠ” μ›μ†Œλ₯Ό μ‚­μ œν•˜λŠ” ν•¨μˆ˜

    swap ( )

    • 두 개의 큐λ₯Ό λ°”κΎΈλŠ” ν•¨μˆ˜

    operator =

    • λŒ€μž…μ—°μ‚°μž κ°€λŠ₯

    relational operator

    • 큐의 크기와 상관없이 ν•˜λ‚˜μ”© μ›μ†Œλ₯Ό λΉ„κ΅ν•˜μ—¬ 확인

    μ‹€μŠ΅

    #include<iostream>
    #include<queue>
    using namespace std;
    int main(){
    queue<int> q1;
    queue<int> q2;
    if(q1.empty()){
    cout<<"queue1λŠ” λΉ„μ–΄μžˆμŠ΅λ‹ˆλ‹€"<<endl;
    }
    q1.push(1);
    q1.push(2);
    q1.push(3);
    q2.push(4);
    q2.push(5);
    if(q1>q2){
    cout<<"q1 > q2"<<endl;
    }
    else if(q1<q2){
    cout<<"q1 < q2"<<endl;
    }
    else{
    cout<<"q1 == q2"<<endl;
    }
    int len = q1.size();
    for(int i=0;i<len;i++){
    cout<<"queue1의 κ°€μž₯ μ•žμ— μžˆλŠ” μ›μ†ŒλŠ” "<<q1.front()<<" μž…λ‹ˆλ‹€"<<endl;
    q1.pop();
    }
    q1.swap(q2); // q1κ³Ό q2 λ°”κΎΈκΈ°
    swap(q1,q2); // q1κ³Ό q2 λ‹€μ‹œ λ°”κΎΈκΈ°
    q1 = q2; // q1에 q2 λŒ€μž…
    len = q1.size();
    for(int i=0;i<len;i++){
    cout<<"queue1의 κ°€μž₯ μ•žμ— μžˆλŠ” μ›μ†ŒλŠ” "<<q1.front()<<" μž…λ‹ˆλ‹€"<<endl;
    q1.pop();
    }
    q2.front()-=1;
    q2.back()-=1;
    for(int i=0;i<len;i++){
    cout<<"queue2의 κ°€μž₯ μ•žμ— μžˆλŠ” μ›μ†ŒλŠ” "<<q2.front()<<" μž…λ‹ˆλ‹€"<<endl;
    q2.pop();
    }
    }
    view raw queue.cpp hosted with ❀ by GitHub

    κ²°κ³Ό

    • μΆ”κ°€λ‘œ κΆκΈˆν•œ μ μ΄λ‚˜ μˆ˜μ •ν•  사항 있으면 λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”.
    λ°˜μ‘ν˜•
Designed by Tistory.