c++ deque


deque를 사용하기 위해서는 <deque> 헤더를 인클루드 해야한다.


deque는 큐형태로, 양방향으로 자료를 넣고 뺄 수 있다.



 생성자

 

 deque dq

 빈 컨테이더 덱 dq 생성

 deque dq(n)

 덱 dq는 기본값으로 초기화된 n개의 원소를 가짐

 deque dq(n, x)

 덱 dq는 x로 초기화된 n개의 원소를 가짐

 deque dq(dq2)

 덱 dq는 덱 dq2의 복사본

 deque dq(b, e)

 덱 dq는 반복자 구간 [b, e)로 초기화된 원소를 가짐


생성자 사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <deque>
using namespace std;
 
int main(void)
{
    deque<int> v1; //길이 = 0
    deque<int> v2(100); //길이 = 100
    deque<int> v3(1005); //길이 = 100, 5로 초기화
    deque<int> v4 = { 12345 }; //길이 5
 
    cout << "v1 크기 : " << v1.size() << '\n';
    cout << "v2 크기 : " << v2.size() << '\n';
    cout << "v3 크기 : " << v3.size() << '\n';
    cout << "v4 크기 : " << v4.size() << '\n';
 
    return 0;
}
cs


주요 멤버 함수

 push_back()

 덱의 가장 뒤에 데이터 추가

 push_front()

 덱의 가장 앞에 데이터 추가

 pop_back()

 덱의 마지막 데이터 제거

 pop_front()

 덱의 첫 데이터 제거

 clear()

 덱의 모든 데이터 제거

 size()

 덱의 크기

 insert()

 덱의 특정 위치에 데이터 삽입

 erase()

 덱의 특정 구간 데이터 제거


사용 예제

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <deque>
 
int main()
{
    std::deque<int> mydeque;
    int sum(0);
 
    mydeque.push_back(300); //300
    mydeque.push_back(400); //300 400
    mydeque.push_back(500); //300 400 500
    mydeque.push_front(200); //200 300 400 500
    mydeque.push_front(100); //100 200 300 400 500
 
    while (!mydeque.empty())
    {
        sum += mydeque.back();
        mydeque.pop_back();
    }
 
    std::cout << "The elements of mydeque add up to " << sum << '\n';
 
    // deque is empty
    for (int i = 1; i <= 10; i++) mydeque.push_back(i);//1 2 3 4 5 6 7 8 9 10
 
    // erase the 6th element
    mydeque.erase(mydeque.begin() + 5);//1 2 3 4 5 7 8 9 10
 
    // erase the first 3 elements:
    mydeque.erase(mydeque.begin(), mydeque.begin() + 3);//4 5 7 8 9 10
 
    std::cout << "mydeque contains:";
    for (unsigned i = 0; i<mydeque.size(); ++i)
        std::cout << ' ' << mydeque[i];
    std::cout << '\n';
 
    //resize
    mydeque.resize(2); //4 5
    std::cout << "my deque size : " << mydeque.size() << '\n';
 
    //clear
    mydeque.clear(); //
    std::cout << "my deque size : " << mydeque.size() << '\n';
 
    for (int i = 1; i <= 10; i++) mydeque.push_back(i);//1 2 3 4 5 6 7 8 9 10
 
    std::deque<int>::iterator it = mydeque.begin();
    ++it;
 
    it = mydeque.insert(it, 20); //1 20 2 3 4 5 6 7 8 9 10
 
    mydeque.insert(it, 230); //1 30 30 20 2 3 4 5 6 7 8 9 10
 
    std::cout << "mydeque contains:";
    for (it = mydeque.begin(); it != mydeque.end(); ++it)
        std::cout << ' ' << *it;
    std::cout << '\n';
 
    return 0;
}
 
cs



참조: http://www.cplusplus.com/reference/deque/deque/

'컴퓨터공학 > STL' 카테고리의 다른 글

[STL] C++ STL string to int/float/double/long long  (0) 2018.07.19
[STL] C++ STL list  (0) 2018.07.19
[STL] C++ STL vector  (0) 2018.07.19
[STL] C++ STL string  (0) 2018.07.19
[STL]C++ STL priority_queue  (0) 2018.07.19

+ Recent posts