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(100, 5); //길이 = 100, 5로 초기화 deque<int> v4 = { 1, 2, 3, 4, 5 }; //길이 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, 2, 30); //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 |
'컴퓨터공학 > 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 |