Vector & List & dequeue
4036 단어 stldata structuredata structure
std::vector
- 동적 배열 ( 배열의 크기 고려 안해도 됨)
- 내부적으로 동적 메모리를 자동으로 관리
- 배열과 유사하게 요소들을 순차적으로 저장
vector<int> v;
vector<int> v(5); * 기본값으로(0) 초기화된 5개의 원소
vector<int> v(5,2); * 2로 초기화된 5개의 원소
vector 멤버함수
iterator(반복자)
vector<int>::iterator it;
- v.begin() : 첫번째 요소의 반복자 위치
- v.end() : 마지막 요소 다음의 반복자 위치(NULL)
추가 및 삭제
- v.push_back(element) : 마지막 원소 뒤에 원소 element를 삽입
- v.pop_back() : 벡터 제일 뒤의 원소를 삭제
조회
- v[idx] : idx번째 원소를 참조
- v.at(idx) : idx번째 원소를 참조 & 범위를 점검
- front() : 첫번째 원소를 반환
- back() : 마지막 원소를 반환
크기 - v.size() : 원소의 개수를 리턴
- v.capacity() : 할당된 공간의 크기를 리턴 & 공간 할당의 기준은 size에 따라 훨씬 커짐
(기존 메모리의 *2의 크기로 capacity가 증가 - 2, 4 ,8 ,16 ...)
std::list
- 연결리스트를 STL로 구현
- 연결리스트와 비슷하게 중간 요소에 데이터 삽입 및 삭제가 용이
- 임의의 접근에는 시간복잡도가 불리 ( 인덱스로 접근이 불가 )
원소 추가/ 삭제 시에 O(1)으로 매우 빠르게 수행됨
반복자는 오직 한 칸씩 움직일 수 없음(반복자 연산이 제한됨)
iterator(반복자)
list<int>::iterator it;
- li.begin() : 첫번째 요소의 반복자 위치
- li.end() : 마지막 요소 다음의 반복자 위치(NULL)
추가 및 삭제
- li.push_front(element) : list 맨 앞에 원소 element를 삽입
- li.pop_front() : 벡터 제일 앞의 원소를 삭제
- li.push_back(element) : 마지막 원소 뒤에 원소 element를 삽입
- li.pop_back() : 벡터 제일 뒤의 원소를 삭제
- insert(iterator, element) : iterator 가 가리키는 부분 "앞"에 원소를 추가
- erase(iterator) : iterator가 가리키는 부분에 원소를 삭제
조회
- front() : 첫번째 원소를 반환
- back() : 마지막 원소를 반환
list<int> L = {1,2};
list<int>::iterator t = L.begin();
L.push_front(10); // 10 1 2
cout << *t << '\n';
L.push_back(5); // 10 1 2 5
L.insert(t, 6); // 10 6 1 2 5
t++;
t = L.erase(t); // t가 가리키는 값을 제거, 그 다음 원소인 5의 위치를 반환
// 10 6 1 2 5, t가 가리키는 값은 5
std:deque
- 2개의 큐를 가지고 있는 자료구조 ( 배열 기반의 구조 )
- 스택과 큐의 역할을 수행 ( FIFO와 LIFO 방식 둘다 가능 )
- list 에서 deque의 역할을 수행 할 수 있음
deque dq;
deque dq(10); * 기본값으로(0) 초기화된 10개의 원소를 가진 dq를 생성
deque dq(10, 4); * 4의 값으로 초기화된 10개의 원소를 가진 dq를 생성
deque 멤버 함수
- deque에는 capacity 멤버 함수가 없음
iterator(반복자)
deque<int>::iterator it;
- dq.begin() : 첫번째 요소의 반복자 위치
- dq.end() : 마지막 요소 다음의 반복자 위치(NULL)
추가 및 삭제
- dq[idx] : idx번째 원소를 참조
- dq.at(idx) : idx번째 원소를 참조 & 범위를 점검
- front() : 첫번째 원소를 반환
- back() : 마지막 원소를 반환
Author And Source
이 문제에 관하여(Vector & List & dequeue), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hey0331/Vector-List-dequeue저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)