도순씨의 코딩일지
C++ :: STL duque 컨테이너 본문
deque 컨테이너는 vector 컨테이너로 vector의 단점을 보완합니다. deque 컨테이너 또한 배열 기반 컨테이너입니다.
deque는 여러 개의 메모리 블록을 할당하고 사용자에게는 하나의 블록처럼 보이게 합니다.
다음 예제는 push_back() 멤버 함수를 사용하여 deque에 원소를 추가하는 예제입니다.
⭐️ push_back 멤버함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream>
#include <deque>
using namespace std;
int main(void){
deque<int> dq;
for(deque<int> :: size_type i = 0 ; i < 10; ++i)
dq.push_back((i+1) * 10);
for(deque<int> :: size_type i = 0 ; i < dq.size() ; ++i)
cout << dq[i] << ' ';
cout << endl;
return 0;
}
|
cs |
⭐️ push_back 멤버함수 실행결과
1
|
10 20 30 40 50 60 70 80 90 100
|
cs |
다음 예제는 push_front()를 사용해보겠습니다.
⭐️ deque의 push_front()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <iostream>
#include <deque>
using namespace std;
int main(){
deque<int> dq;
dq.push_back(10);
dq.push_back(20);
dq.push_back(30);
dq.push_back(40);
dq.push_back(50);
for(deque<int> :: size_type i = 0 ; i < dq.size() ; ++i)
cout << dq[i] << " ";
cout << endl;
dq.push_front(100);
dq.push_front(200);
for(deque<int> :: size_type i = 0 ; i < dq.size() ; ++i)
cout << dq[i] << " ";
cout << endl;
return 0;
}
|
cs |
⭐️ deque의 push_front() 실행결과
1
2
|
10 20 30 40 50
200 100 10 20 30 40 50
|
cs |
다음은 임의 접근 반복자가 지원하는 연산을 수행한 예제입니다.
⭐️ deque의 반복자
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
|
#include <iostream>
#include <deque>
using namespace std;
int main(void){
deque<int> dq;
dq.push_back(10);
dq.push_back(20);
dq.push_back(30);
dq.push_back(40);
dq.push_back(50);
deque<int> :: iterator iter;
for(iter = dq.begin() ; iter != dq.end() ; ++ iter)
cout << *iter << " ";
cout << endl;
iter = dq.begin() + 2;
cout << *iter << endl;
iter += 2;
cout << *iter << endl;
iter -= 3;
cout << *iter << endl;
return 0;
}
|
cs |
⭐️ deque의 반복자 실행결과
1
2
3
4
|
10 20 30 40 50
30
50
20
|
cs |
deque의 insert() 예제는 반복자가 가리키는 임의의 위치에 원소를 삽입할 수 있습니다. 다음은 deque의 insert() 멤버 함수를 사용한 예제입니다
⭐️ deque의 insert()
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
|
#include <iostream>
#include <deque>
using namespace std;
int main(void){
deque<int> dq;
for(int i = 0 ; i < 10 ; i ++)
dq.push_back((i+1) * 10 );
deque<int> :: iterator iter;
deque<int> :: iterator iter2;
for(iter = dq.begin() ; iter != dq.end() ; ++iter)
cout << *iter << ' ';
cout << endl;
iter = dq.begin() + 2; // 인덱스는 배열과 비슷
iter2 = dq.insert(iter, 500);
cout << *iter2 << endl;
for(iter = dq.begin() ; iter != dq.end() ; ++iter)
cout << *iter << ' ';
cout << endl;
return 0;
}
|
cs |
⭐️ deque의 insert() 실행결과
1
2
3
|
10 20 30 40 50 60 70 80 90 100
500
10 20 500 30 40 50 60 70 80 90 100
|
cs |
deque 또한 vector처럼 연속한 원소를 빠르게 접근할 수 있도록 at()과 [] 연산자를 제공합니다.
📚 출처
공동환(2012), 뇌를 자극하는 C++ STL, 한빛미디어.
'𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆 > 𝐂++' 카테고리의 다른 글
C++ :: STL set 컨테이너 (0) | 2020.09.17 |
---|---|
C++ :: STL list 컨테이너 (0) | 2020.09.15 |
STL :: 시퀸스 컨테이너(1) (0) | 2020.09.12 |
C++ :: STL이란? (0) | 2020.09.08 |
C++ :: 예외처리(try, catch, throw) (0) | 2020.09.02 |
Comments