검색결과 리스트
글
[STL]기초, 컨테이너(vector, deque, list)
STL이란 무엇인가?
STL이란 C++언어의 "표준 템플릿 라이브러리" Standard Template Library 약자입니다. STL을 간단하
게 말하자면 일반적으로 많이 사용되는 자료구조와 알고리즘을 모은 라이브러리입니다.
STL은 대부분 알고있는 자료구조와 알고리즘을 제공합니다.
컨테이너(Container) 에서는 시퀀스 컨테이너(sequence container)와 정렬 연관 컨테이너가 있습니다.
시퀀스 컨테이너는 Vector, List, Deque 가 있고, 정렬 연관 컨테이너는 Set, Multiset, Map, Multimap이 있습니다.
시퀀스 컨테이너는 index들의 동일한 형식의 객체들이 선형적으로 연결되어 있습니다.
▶ 시퀀스 컨테이너의 멤버함수
assign |
특정 원소로 채운다 |
clear |
모든 원소를 지운다 |
swap |
두개의 컨테이너 원소를 바꾼다 |
empth |
아무것도 없으면 true 반환 |
begin |
첫번째 원소의 반복자 반환 |
front |
첫 번째 원소의 참조를 반환 |
end |
마지막 원소의 반복자 반환 |
back |
마지막 원소의 참조를 반환 |
rbegin |
역방향의 첫번째 원소 반복자 반환 |
rend |
역방향의 마지막 원소 다음의 반복자를 반환 |
size |
원소의 개수를 반환 |
reserve |
지정된 크기만큼의 공간을 확보 |
resize |
컨테이너가 담을수 있는 개수를 지정 |
push_back |
마지막에 원소를 추가 |
pop_back |
마지막 원소를 삭제 |
insert |
특정 위치에 원소를 삽입 |
erase |
특정 위치의 원소나 지정범위 삭제 |
▶ 시퀀스 컨테이너의 선언과 초기화
디폴트 생성자 : deque<int>myD;
원소의 개수를 지정 : deque<int>myD(10);
원소의 개수와 값을 초기화 : deque<int>myD(10, 3);
▶ STL-Vector
선형 구조의 가변 배열 방식입니다.
동일한 형식의 객체를 계속 넣을수 있습니다.
요소의 개수에 따라 자동으로 메모리 관리를 합니다.
☞ vector 예제
▶ STL-Deque
deque는 double ended queue의 줄임말입니다.
두개의 key를 두어 앞과 뒤를 관리하여, FIFO와 LIFO를 모두 사용할수 있습니다.
☞ Vector와 Deque의 단점은 중간의 삽입과 삭제를 수행시 데이터 이동이 있다는 것입니다.(일종의 행렬)
삽입과 제거가 빈번한 알고리즘에서는 벡터보다는 리스트를 쓰는것이 좋습니다.
▶ STL-List
각 노드는 링크(포인터)로 연결되어 있습니다.
iterator(반복자)를 사용해 탐색이 가능합니다.
☞ List의 단점은 중간에 원소에 접근이 불가능하고, 탐색시 처음부터 검색해야 한다는 점입니다.
탐색이 많은 경우 List보다는 Vector혹은 Deque를 쓰는것이 좋습니다.
<List의 탐색> List<int>::iterator itr; for(itr = myList.begin(); itr != myList.end(); itr++) cout << *itr; |
List는 sort(정렬)을 지원합니다. [qsort사용불가]
List.sort(); //오름차순 정렬 List.sort(greater<T>()); //내림차순 정렬 |
'프로그래밍 > C/C++' 카테고리의 다른 글
[STL] 정렬 컨테이너1 (set, multiset, map, multimap) (0) | 2014.02.09 |
---|---|
[STL] 제네릭(generic) 기초 정리 (0) | 2014.02.09 |
pthread 함수정리 (1) | 2014.01.31 |
윈도우 스레드(win thread) - 세마포어예제 (0) | 2014.01.29 |
멀티스레드 개념 정리 (0) | 2014.01.28 |