SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Data Structures
Data StructuresData Structures
Data Structuresskku_npc
 
Java 자료구조 비교 (Java1.6 기준)
Java 자료구조 비교 (Java1.6 기준)Java 자료구조 비교 (Java1.6 기준)
Java 자료구조 비교 (Java1.6 기준)혜웅 박
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Park Jonggun
 
Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Park Jonggun
 
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)MIN SEOK KOO
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Park Jonggun
 
Python+numpy pandas 1편
Python+numpy pandas 1편Python+numpy pandas 1편
Python+numpy pandas 1편Yong Joon Moon
 
Effective STL 1~4장 정리
Effective STL 1~4장 정리Effective STL 1~4장 정리
Effective STL 1~4장 정리Shin heemin
 
[Swift] Subscripts
[Swift] Subscripts[Swift] Subscripts
[Swift] SubscriptsBill Kim
 
Windows via c++ chapter6
Windows via c++   chapter6Windows via c++   chapter6
Windows via c++ chapter6Shin heemin
 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL studySeo Dong-yu
 
C# 세미나 12회차
C# 세미나 12회차C# 세미나 12회차
C# 세미나 12회차Jeung_mh
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편Yong Joon Moon
 

La actualidad más candente (20)

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

Destacado

Nuevo Enfoque de la Guerra (mary Kaldor)
Nuevo Enfoque de la Guerra (mary Kaldor)Nuevo Enfoque de la Guerra (mary Kaldor)
Nuevo Enfoque de la Guerra (mary Kaldor)Luis Landaeta
 
Conectando o Sudeste do Brasil
Conectando o Sudeste do BrasilConectando o Sudeste do Brasil
Conectando o Sudeste do BrasilMarco Coghi
 
Projeto Sol a Pino Sport
Projeto Sol a Pino SportProjeto Sol a Pino Sport
Projeto Sol a Pino SportMarco Coghi
 
Jorge e Mateus - Paulínia Arena Music - 19.10.2012
Jorge e Mateus - Paulínia Arena Music - 19.10.2012Jorge e Mateus - Paulínia Arena Music - 19.10.2012
Jorge e Mateus - Paulínia Arena Music - 19.10.2012VocenoSertanejo
 
Contaminación
ContaminaciónContaminación
ContaminaciónCarla
 
Ipatinga-GP04-PMO-Six_Talents
Ipatinga-GP04-PMO-Six_TalentsIpatinga-GP04-PMO-Six_Talents
Ipatinga-GP04-PMO-Six_TalentsMarco Coghi
 
Saopaulo gp02 pmo prever consulting
Saopaulo gp02 pmo prever consultingSaopaulo gp02 pmo prever consulting
Saopaulo gp02 pmo prever consultingMarco Coghi
 
Goiania gp18-pmo-grupo3
Goiania gp18-pmo-grupo3Goiania gp18-pmo-grupo3
Goiania gp18-pmo-grupo3Marco Coghi
 
Avaliação eproinfo - leandro 23.09.11
Avaliação   eproinfo - leandro 23.09.11Avaliação   eproinfo - leandro 23.09.11
Avaliação eproinfo - leandro 23.09.11José Luis Carneiro
 
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPT
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPTCONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPT
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPTMarco Coghi
 
201110 retrato socio económico dos países asiáticos
201110 retrato socio económico dos países asiáticos201110 retrato socio económico dos países asiáticos
201110 retrato socio económico dos países asiáticosMiguel Crespo
 

Destacado (20)

PMO_Arena Leão
PMO_Arena LeãoPMO_Arena Leão
PMO_Arena Leão
 
Lisarb
LisarbLisarb
Lisarb
 
ECOTRON
ECOTRONECOTRON
ECOTRON
 
Nuevo Enfoque de la Guerra (mary Kaldor)
Nuevo Enfoque de la Guerra (mary Kaldor)Nuevo Enfoque de la Guerra (mary Kaldor)
Nuevo Enfoque de la Guerra (mary Kaldor)
 
Conectando o Sudeste do Brasil
Conectando o Sudeste do BrasilConectando o Sudeste do Brasil
Conectando o Sudeste do Brasil
 
Projeto Sol a Pino Sport
Projeto Sol a Pino SportProjeto Sol a Pino Sport
Projeto Sol a Pino Sport
 
Rede Limpa
Rede LimpaRede Limpa
Rede Limpa
 
Jorge e Mateus - Paulínia Arena Music - 19.10.2012
Jorge e Mateus - Paulínia Arena Music - 19.10.2012Jorge e Mateus - Paulínia Arena Music - 19.10.2012
Jorge e Mateus - Paulínia Arena Music - 19.10.2012
 
Contaminación
ContaminaciónContaminación
Contaminación
 
Ipatinga-GP04-PMO-Six_Talents
Ipatinga-GP04-PMO-Six_TalentsIpatinga-GP04-PMO-Six_Talents
Ipatinga-GP04-PMO-Six_Talents
 
Saopaulo gp02 pmo prever consulting
Saopaulo gp02 pmo prever consultingSaopaulo gp02 pmo prever consulting
Saopaulo gp02 pmo prever consulting
 
Goiania gp18-pmo-grupo3
Goiania gp18-pmo-grupo3Goiania gp18-pmo-grupo3
Goiania gp18-pmo-grupo3
 
Deficit De Atencion
Deficit De AtencionDeficit De Atencion
Deficit De Atencion
 
Avaliação eproinfo - leandro 23.09.11
Avaliação   eproinfo - leandro 23.09.11Avaliação   eproinfo - leandro 23.09.11
Avaliação eproinfo - leandro 23.09.11
 
PMO em Lisarb
PMO em LisarbPMO em Lisarb
PMO em Lisarb
 
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPT
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPTCONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPT
CONSTRUÇÃO DO CONDOMÍNIO RESIDENCIAL NEW CONCEPT
 
EcoHouse
EcoHouseEcoHouse
EcoHouse
 
201110 retrato socio económico dos países asiáticos
201110 retrato socio económico dos países asiáticos201110 retrato socio económico dos países asiáticos
201110 retrato socio económico dos países asiáticos
 
LISARB
LISARBLISARB
LISARB
 
1 + 1 = 2
1 + 1 = 21 + 1 = 2
1 + 1 = 2
 

Más de noerror

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

Más de noerror (20)

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