SlideShare a Scribd company logo
STL 컨테이너
    김성익(noerror@hitel.net)
               2005.04.07
개요
• Standard Template Library
• 적절한 컨테이너 선택
• Template / namespace

• 순차 컨테이너 vector, list, deque
• 연관 컨테이너 map, set, multimap,
 multiset
반복자
• STL 컨테이너의 공통적인 element 접근
  방법
• 순회
• 삭제, 삽입, 검색
순차 컨테이너(1)
• Element 를 리스트 앞이나 뒤에 삽입하
  며, 순서가 그대로 유지되는 컨테이너
• iterator를 이용한 공통적인 순회 방식
순차 컨테이너(2)
• vector
• list
• deque : double-ended queue
vector 특징
• 내부적으로 배열과 거의 동일
 동적인 배열??
• 접근이 빠르다
• 디버깅시 내부 직접 접근하기 좋다
vector 삽입/삭제
• 삽입 (리스트의 마지막에): push_back
 배열의 크기가 부족한 경우 배열을 늘린 후 element
 를 복사
• 삭제 (반복자 이용)
 vector는 삭제 후 계속 순회하는 것도 가능하지만 다
 른 컨테이너는 유효하지 않다
vector 삽입/삭제
• 삭제 비용이 크다
 삭제 후 뒷부분의 element를 하나씩 앞당겨 복사한다
vector 접근
• 반복자를 이용한 접근
• [] 오퍼레이터를 이용한 랜덤 접근
vector 소팅
• 가벼운 소팅
deque 특징
• 리스트 앞/뒤에 삽입 가능
• 일부 배열의 특성을 비교적 유지
 내부 블록은 배열처럼 연속된 메모리로 구성
• 랜덤 억세스 가능
list 특징
• 내부적으로 링크드 리스트 구조
• vector에 비해서 삽입/삭제 비용이 저렴
• 리스트에 앞/뒤에 삽입 가능
 중간 삽입 비용도 저렴
• 랜덤 억세스 불가능
연관 컨테이너
• 내부적인 순서와 상관없이 배열되는 구
  조
 내부 리스트 구성 알고리즘에 대한 정해진 규칙은 없
 다
• 주로 검색이 많은 자료 구조형에 사용
map 특징
• 검색이 빠르다
• element는 pair 구조로 두 개의 값을 가
  진다 (키 값, 데이터 값)
• 중복된 키 값은 가질 수 없다
map사용(1)
• 반복자, 혹은 [] 연산자를 이용해서 접
  근 가능하다
map사용(2)
• 키 값을 스트링을 사용
 빈번하게 사용되는 예
map 비교자 활용
• string대신 문자열 포인터를 키로 사용
 키 값이 안 바뀌고, 포인터가 항상 유효 해야 함
multimap 특징
• map과 거의 동일한 특성
• 같은 키를 가지는 여러 element 존재
• []연산자 사용 불가
set 특징
• map과 비슷하지만 키 값만 존재
• 단순히 존재하느냐 아니냐 검색에 사용




• multiset은 여러 개의 키 값의 element
  존재가능한 자료형
기타
• Thread unsafe 하지만, 그렇기 때문에
  오버헤드가 없다
• 메모리 할당자
• reserve, resize
• find_if, for_each,…

• STL은 만능입니까 ?
참고
• Standard Template Library
  Programmer's Guide
 http://www.sgi.com/tech/stl/
• An introduction of STL for beginners
 http://www.mindcracker.com/mindcracker/c_cafe/
 stl/stlt1.asp

More Related Content

PPTX
[C++adv] STL 사용법과 주의 사항
PPTX
C++ stl
PDF
Stl vector, list, map
PPTX
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
PDF
C++ VECTOR, LIST, MAP
PPTX
Stl 컨테이너
PDF
STL study (skyLab)
PDF
Binary Search
[C++adv] STL 사용법과 주의 사항
C++ stl
Stl vector, list, map
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
C++ VECTOR, LIST, MAP
Stl 컨테이너
STL study (skyLab)
Binary Search

What's hot (20)

PPTX
Data Structures
PDF
Java 자료구조 비교 (Java1.6 기준)
PDF
Start IoT with JavaScript - 4.객체1
PDF
Start IoT with JavaScript - 2.연산자
PPTX
Iterator pattern
PPTX
PPTX
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
PPTX
자바로 배우는 자료구조
PDF
Start IoT with JavaScript - 5.객체2
PPTX
Python+numpy pandas 1편
PPTX
Effective STL 1~4장 정리
PDF
[Swift] Subscripts
PPTX
Windows via c++ chapter6
PPTX
Swift 0x17 generics
PPTX
엔티티(Entity)_스프링학원/IT학원추천/스프링학원추천
PPTX
C++ Template/STL study
PPTX
C# 세미나 12회차
PPTX
Python+numpy pandas 3편
PPTX
자바스크립트 클래스의 프로토타입(prototype of class)
PDF
9 swift 클로저1
Data Structures
Java 자료구조 비교 (Java1.6 기준)
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 2.연산자
Iterator pattern
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
자바로 배우는 자료구조
Start IoT with JavaScript - 5.객체2
Python+numpy pandas 1편
Effective STL 1~4장 정리
[Swift] Subscripts
Windows via c++ chapter6
Swift 0x17 generics
엔티티(Entity)_스프링학원/IT학원추천/스프링학원추천
C++ Template/STL study
C# 세미나 12회차
Python+numpy pandas 3편
자바스크립트 클래스의 프로토타입(prototype of class)
9 swift 클로저1
Ad

Viewers also liked (20)

PPTX
PMO_Arena Leão
PDF
Lisarb
PDF
ECOTRON
PDF
Nuevo Enfoque de la Guerra (mary Kaldor)
PDF
Conectando o Sudeste do Brasil
PDF
Projeto Sol a Pino Sport
PDF
Rede Limpa
PPSX
Jorge e Mateus - Paulínia Arena Music - 19.10.2012
PPTX
Contaminación
PDF
Ipatinga-GP04-PMO-Six_Talents
PPTX
Saopaulo gp02 pmo prever consulting
PPT
Goiania gp18-pmo-grupo3
PPTX
Deficit De Atencion
PPTX
Avaliação eproinfo - leandro 23.09.11
PDF
PMO em Lisarb
PDF
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPT
PDF
EcoHouse
PPT
201110 retrato socio económico dos países asiáticos
PDF
LISARB
PPS
1 + 1 = 2
PMO_Arena Leão
Lisarb
ECOTRON
Nuevo Enfoque de la Guerra (mary Kaldor)
Conectando o Sudeste do Brasil
Projeto Sol a Pino Sport
Rede Limpa
Jorge e Mateus - Paulínia Arena Music - 19.10.2012
Contaminación
Ipatinga-GP04-PMO-Six_Talents
Saopaulo gp02 pmo prever consulting
Goiania gp18-pmo-grupo3
Deficit De Atencion
Avaliação eproinfo - leandro 23.09.11
PMO em Lisarb
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPT
EcoHouse
201110 retrato socio económico dos países asiáticos
LISARB
1 + 1 = 2
Ad

More from noerror (20)

PPTX
15_TextureAtlas
PPTX
11_웹서비스활용
PDF
NDC08_실시간비주얼그래프편집
PDF
NDC12_Lockless게임서버설계와구현
PPTX
KCGS11_실시간 피사계 심도 렌더링 개선 기법
PDF
11_통계 자료분석 입문
PPTX
11_빠른 개발 가능한 레벨 편집 시스템
PPTX
11_SH를 이용한 실시간 투명 근사법
PDF
ICON08_게임 애니메이션 최적화 기법
PDF
08_Marching Cube Terrains
PDF
08_게임 물리 프로그래밍 가이드
PDF
08_플래시 맛보기
PDF
08_애니메이션고등학교 게임과 특강
PDF
08_Wxwidgets 소개
PDF
07_PhysX 강체물리 입문
PDF
07_스케일폼 소개
PDF
07_Visual Shader Editor
PDF
06_HDR 소개
PDF
06_게임엔진 활용팁
PDF
06_게임엔진구성
15_TextureAtlas
11_웹서비스활용
NDC08_실시간비주얼그래프편집
NDC12_Lockless게임서버설계와구현
KCGS11_실시간 피사계 심도 렌더링 개선 기법
11_통계 자료분석 입문
11_빠른 개발 가능한 레벨 편집 시스템
11_SH를 이용한 실시간 투명 근사법
ICON08_게임 애니메이션 최적화 기법
08_Marching Cube Terrains
08_게임 물리 프로그래밍 가이드
08_플래시 맛보기
08_애니메이션고등학교 게임과 특강
08_Wxwidgets 소개
07_PhysX 강체물리 입문
07_스케일폼 소개
07_Visual Shader Editor
06_HDR 소개
06_게임엔진 활용팁
06_게임엔진구성

05_STL컨테이너정리

  • 1. STL 컨테이너 김성익(noerror@hitel.net) 2005.04.07
  • 2. 개요 • Standard Template Library • 적절한 컨테이너 선택 • Template / namespace • 순차 컨테이너 vector, list, deque • 연관 컨테이너 map, set, multimap, multiset
  • 3. 반복자 • STL 컨테이너의 공통적인 element 접근 방법 • 순회 • 삭제, 삽입, 검색
  • 4. 순차 컨테이너(1) • Element 를 리스트 앞이나 뒤에 삽입하 며, 순서가 그대로 유지되는 컨테이너 • iterator를 이용한 공통적인 순회 방식
  • 5. 순차 컨테이너(2) • vector • list • deque : double-ended queue
  • 6. vector 특징 • 내부적으로 배열과 거의 동일 동적인 배열?? • 접근이 빠르다 • 디버깅시 내부 직접 접근하기 좋다
  • 7. vector 삽입/삭제 • 삽입 (리스트의 마지막에): push_back 배열의 크기가 부족한 경우 배열을 늘린 후 element 를 복사 • 삭제 (반복자 이용) vector는 삭제 후 계속 순회하는 것도 가능하지만 다 른 컨테이너는 유효하지 않다
  • 8. vector 삽입/삭제 • 삭제 비용이 크다 삭제 후 뒷부분의 element를 하나씩 앞당겨 복사한다
  • 9. vector 접근 • 반복자를 이용한 접근 • [] 오퍼레이터를 이용한 랜덤 접근
  • 11. deque 특징 • 리스트 앞/뒤에 삽입 가능 • 일부 배열의 특성을 비교적 유지 내부 블록은 배열처럼 연속된 메모리로 구성 • 랜덤 억세스 가능
  • 12. list 특징 • 내부적으로 링크드 리스트 구조 • vector에 비해서 삽입/삭제 비용이 저렴 • 리스트에 앞/뒤에 삽입 가능 중간 삽입 비용도 저렴 • 랜덤 억세스 불가능
  • 13. 연관 컨테이너 • 내부적인 순서와 상관없이 배열되는 구 조 내부 리스트 구성 알고리즘에 대한 정해진 규칙은 없 다 • 주로 검색이 많은 자료 구조형에 사용
  • 14. map 특징 • 검색이 빠르다 • element는 pair 구조로 두 개의 값을 가 진다 (키 값, 데이터 값) • 중복된 키 값은 가질 수 없다
  • 15. map사용(1) • 반복자, 혹은 [] 연산자를 이용해서 접 근 가능하다
  • 16. map사용(2) • 키 값을 스트링을 사용 빈번하게 사용되는 예
  • 17. map 비교자 활용 • string대신 문자열 포인터를 키로 사용 키 값이 안 바뀌고, 포인터가 항상 유효 해야 함
  • 18. multimap 특징 • map과 거의 동일한 특성 • 같은 키를 가지는 여러 element 존재 • []연산자 사용 불가
  • 19. set 특징 • map과 비슷하지만 키 값만 존재 • 단순히 존재하느냐 아니냐 검색에 사용 • multiset은 여러 개의 키 값의 element 존재가능한 자료형
  • 20. 기타 • Thread unsafe 하지만, 그렇기 때문에 오버헤드가 없다 • 메모리 할당자 • reserve, resize • find_if, for_each,… • STL은 만능입니까 ?
  • 21. 참고 • Standard Template Library Programmer's Guide http://www.sgi.com/tech/stl/ • An introduction of STL for beginners http://www.mindcracker.com/mindcracker/c_cafe/ stl/stlt1.asp