𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆/𝐂++
C++ :: STL duque 컨테이너
도순씨
2020. 9. 14. 00:00
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, 한빛미디어.