SlideShare a Scribd company logo
STL
들어가며… 
 컨테이너 : 자료를 담는 그릇 
 반복자 : 자료에 접근하는 포인터 
 algorithm : 컨테이너를 손쉽게 다루는 함수들을 제공 
 시퀸스 컨테이너 < vector, list, deque> / 자료 수가 적을 때 
 연관 컨테이너 <map류> / 자료 수가 많을 때 
(multi map 혹은 multi set은 key 값이 중복될 수 있는 것)
#include <list> 
 자료 구조 : 이중 링크드 리스트 
 순차적으로만 접근 해야 함 
 m_ShipList[i] 지원 안됨 (m_ShipList.at(i) 지원x) 
 Iterpos + 5; 지원 안됨 
 순차적으로만 접근 해야함 
 그럼 뭐가 이득? 
 reserve(n); 할 필요가 없음. 배열형식이 아니기 때문 
 m_ShipList.pushfront(m_Aircraft); 할 수 있음 (popfront(m_Aircraft);) 
 정렬 시 빠르다. 
 쓰기에 특화
#include<vector> 
 자료구조 : 배열 (하지만, 중간에 삭제하면 뒤에 있던 자료가 앞으로 댕겨짐) 
 랜덤접근 가능. 
 m_ShipList[i] , m_ShipList.at(i) 가능 
 Iterpos + 5 ; 가능 
 reserve(n); 해줘야 복사 방지 
 읽기에 특화
#include<deque> 
 자료구조: 이중 큐 
 양쪽에서 가므로 FIFO, LIFO 다 됨 
 <list>처럼 push_front, push_back 다 된다. 
 그럼 List와 다른점은? 
 <Vector>처럼 랜덤 접근이 가능하다 
 앞에서 넣고 빼기에 가장 효율적이라고 함.
#include <map> 
 자료구조 : Tree 
 기본적으로 key값으로 무언가를 탐색할 때 쓰면 유용하다. 
 삽입 삭제가 적을 경우 사용한다.
#include<set> 
 자료구조 : Tree 
 Map과 달리 key만 저장한다 
 key가 있는지 없는지 알아야 할 때 사용한다. (ex) 주민등록번호 
 key를 수정할 수 있지만 수정한 경우 수정 값으로 정렬 되지 않는다.
#include<Algorithm> 
 크게 읽기/ 변경 / 수치 / 정렬이 있음 
 읽기 
 find / find_if / find_end/ find_end/ search 
=>찾을려고하는 데이터의 반복자를 return 
 for_each => for문을 돌면서 함수를 호출 (for문 도는것과 같은 효과) 
 count => 조건을 만족하는 데이터의 개수를 return
#include<Algorithm> 
 find , find_if : 찾고자 하는 데이터의 iterator를 반환 (문자열을 찾는데 특화되어있음) 
 Find 
 Find_if : bool 함수를 이용하여 데이터를 찾음. 문자열의 부분 부분을 비교하는데 용이
#include<Algorithm> 
 Search , find_end : 전의 find가 한 문자(string의 경우), 를 찾아 반복자를 리턴 
했다면 search하고 find_end는 구간의 일치하는 것을 찾음 
 Search는 앞에서 부터 탐색 
 find_end는 뒤에서 부터 탐색 ( Search_end라고하면 더 make sense했을듯)
#include<Algorithm> 
 쓰기 
 Copy, copy backward 
 Generate 
 Random_shuffle 
 Remove
#include<Algorithm> 
 Copy 
 Assign 하고는 무엇이 다르지? 
 Assign은 특정 값으로 채우는 것이고, copy는 어느 부분부터 어느부분까지를 복사
#include<Algorithm> 
 Generate 함수를 사용하여 생성 
 For문을 돌면서 makeShip()을 하는 것과 같음
#include<Algorithm> 
 Random_Shuffle 컨테이너의 원소의 순서를 섞음 
 Vector를 쓸 경우 반복자를 이용해 그냥 랜덤 접근하는 것이 더 편할 것 같음
#include<Algorithm> 
 Remove: 컨테이너를 삭제하는 시늉을 함 
실제로 삭제한 것이 아니니 컨테이너의 크기는 변하지 않음 
(실제 삭제는 erase를 호출 해줘야 함)
#include<Algorithm> 
 정렬 – Sort / binary_Search / merge 
 Sort 
-stl 기본형이라면 greate나 less를 이용한다. 
-string도 비교 가능 (알파벳 순으로) 
-비교 함수를 만들어 정렬 가능하다.
#include<Algorithm> 
 binary search 
-이미 정렬 되어 있는 것에서 특정 데이터를 확인하는 알고리즘 
 merge 
-두 개의 정렬된 구간을 합칠 때 사용
#include<Algorithm> 
 수치 – accumulate / inner_product 
 accumulate 
-지정 구간 속한 값을 더한다. 
-#include <numeric> 필요
#include<Algorithm> 
 inner_porduct 
두 입력 시퀀스를 내적 하는 알고리즘 
//즉 각 시퀀스의 위치마다 곱하고 이를 다 더한다. 
//두 번째 입력 시퀀스는 첫 번째보다 크거나 같아야 한다.

More Related Content

PDF
[Swift] Data Structure - Array
PPTX
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
PDF
[Swift] Iterator
PDF
[Swift] Tuple
PDF
Stl vector, list, map
PPTX
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
PDF
[Swift] Subscripts
PDF
[Algorithm] Binary Search
[Swift] Data Structure - Array
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[Swift] Iterator
[Swift] Tuple
Stl vector, list, map
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
[Swift] Subscripts
[Algorithm] Binary Search

What's hot (20)

PDF
[Algorithm] Selection Sort
PDF
05_STL컨테이너정리
PDF
Binary Search
PPTX
Data Structures
PDF
C++ VECTOR, LIST, MAP
PPTX
Apply교육
PDF
자료구조6보고서
PPTX
Python 스터디
PDF
Project#6 오탈자 검사 D0 Hwp
PPTX
Data structure review (summer study)
PPTX
Stl 컨테이너
PDF
[Swift] Data Structure - Heap
PPTX
C++ stl
PPTX
1. alps c&c++
PDF
Hash table
PDF
[Algorithm] Counting Sort
PDF
Javascript - Array
PPTX
[C++adv] STL 사용법과 주의 사항
PPTX
Std bind
PPTX
Scala스터디 - 배열사용하기
[Algorithm] Selection Sort
05_STL컨테이너정리
Binary Search
Data Structures
C++ VECTOR, LIST, MAP
Apply교육
자료구조6보고서
Python 스터디
Project#6 오탈자 검사 D0 Hwp
Data structure review (summer study)
Stl 컨테이너
[Swift] Data Structure - Heap
C++ stl
1. alps c&c++
Hash table
[Algorithm] Counting Sort
Javascript - Array
[C++adv] STL 사용법과 주의 사항
Std bind
Scala스터디 - 배열사용하기
Ad

Similar to [Commit Again] 1주차 STL study (20)

PPTX
자바로 배우는 자료구조
PDF
Collection framework
PPTX
02. data structure and stl
PDF
[Swift] Data Structure - Queue
PDF
Haskell study 5
PDF
Scala 기초 (4)
PDF
Java(4/4)
PDF
Light Tutorial Python
PDF
STL study (skyLab)
PPTX
이펙티브 C++ 공부
PPTX
Effective STL 1~4장 정리
PPTX
모어이펙티브 C++ 3,4장 예외, 효율 스터디
PDF
Swift3 generic
PDF
파이썬 기본 문법
PDF
Java advancd ed10
PDF
Haskell study 4
PDF
Project#2말의여행 Hwp
PDF
Scala
PDF
실용주의 디자인패턴 2 인터페이스로 프로그래밍하기
PDF
Java_08 collection
자바로 배우는 자료구조
Collection framework
02. data structure and stl
[Swift] Data Structure - Queue
Haskell study 5
Scala 기초 (4)
Java(4/4)
Light Tutorial Python
STL study (skyLab)
이펙티브 C++ 공부
Effective STL 1~4장 정리
모어이펙티브 C++ 3,4장 예외, 효율 스터디
Swift3 generic
파이썬 기본 문법
Java advancd ed10
Haskell study 4
Project#2말의여행 Hwp
Scala
실용주의 디자인패턴 2 인터페이스로 프로그래밍하기
Java_08 collection
Ad

[Commit Again] 1주차 STL study

  • 1. STL
  • 2. 들어가며…  컨테이너 : 자료를 담는 그릇  반복자 : 자료에 접근하는 포인터  algorithm : 컨테이너를 손쉽게 다루는 함수들을 제공  시퀸스 컨테이너 < vector, list, deque> / 자료 수가 적을 때  연관 컨테이너 <map류> / 자료 수가 많을 때 (multi map 혹은 multi set은 key 값이 중복될 수 있는 것)
  • 3. #include <list>  자료 구조 : 이중 링크드 리스트  순차적으로만 접근 해야 함  m_ShipList[i] 지원 안됨 (m_ShipList.at(i) 지원x)  Iterpos + 5; 지원 안됨  순차적으로만 접근 해야함  그럼 뭐가 이득?  reserve(n); 할 필요가 없음. 배열형식이 아니기 때문  m_ShipList.pushfront(m_Aircraft); 할 수 있음 (popfront(m_Aircraft);)  정렬 시 빠르다.  쓰기에 특화
  • 4. #include<vector>  자료구조 : 배열 (하지만, 중간에 삭제하면 뒤에 있던 자료가 앞으로 댕겨짐)  랜덤접근 가능.  m_ShipList[i] , m_ShipList.at(i) 가능  Iterpos + 5 ; 가능  reserve(n); 해줘야 복사 방지  읽기에 특화
  • 5. #include<deque>  자료구조: 이중 큐  양쪽에서 가므로 FIFO, LIFO 다 됨  <list>처럼 push_front, push_back 다 된다.  그럼 List와 다른점은?  <Vector>처럼 랜덤 접근이 가능하다  앞에서 넣고 빼기에 가장 효율적이라고 함.
  • 6. #include <map>  자료구조 : Tree  기본적으로 key값으로 무언가를 탐색할 때 쓰면 유용하다.  삽입 삭제가 적을 경우 사용한다.
  • 7. #include<set>  자료구조 : Tree  Map과 달리 key만 저장한다  key가 있는지 없는지 알아야 할 때 사용한다. (ex) 주민등록번호  key를 수정할 수 있지만 수정한 경우 수정 값으로 정렬 되지 않는다.
  • 8. #include<Algorithm>  크게 읽기/ 변경 / 수치 / 정렬이 있음  읽기  find / find_if / find_end/ find_end/ search =>찾을려고하는 데이터의 반복자를 return  for_each => for문을 돌면서 함수를 호출 (for문 도는것과 같은 효과)  count => 조건을 만족하는 데이터의 개수를 return
  • 9. #include<Algorithm>  find , find_if : 찾고자 하는 데이터의 iterator를 반환 (문자열을 찾는데 특화되어있음)  Find  Find_if : bool 함수를 이용하여 데이터를 찾음. 문자열의 부분 부분을 비교하는데 용이
  • 10. #include<Algorithm>  Search , find_end : 전의 find가 한 문자(string의 경우), 를 찾아 반복자를 리턴 했다면 search하고 find_end는 구간의 일치하는 것을 찾음  Search는 앞에서 부터 탐색  find_end는 뒤에서 부터 탐색 ( Search_end라고하면 더 make sense했을듯)
  • 11. #include<Algorithm>  쓰기  Copy, copy backward  Generate  Random_shuffle  Remove
  • 12. #include<Algorithm>  Copy  Assign 하고는 무엇이 다르지?  Assign은 특정 값으로 채우는 것이고, copy는 어느 부분부터 어느부분까지를 복사
  • 13. #include<Algorithm>  Generate 함수를 사용하여 생성  For문을 돌면서 makeShip()을 하는 것과 같음
  • 14. #include<Algorithm>  Random_Shuffle 컨테이너의 원소의 순서를 섞음  Vector를 쓸 경우 반복자를 이용해 그냥 랜덤 접근하는 것이 더 편할 것 같음
  • 15. #include<Algorithm>  Remove: 컨테이너를 삭제하는 시늉을 함 실제로 삭제한 것이 아니니 컨테이너의 크기는 변하지 않음 (실제 삭제는 erase를 호출 해줘야 함)
  • 16. #include<Algorithm>  정렬 – Sort / binary_Search / merge  Sort -stl 기본형이라면 greate나 less를 이용한다. -string도 비교 가능 (알파벳 순으로) -비교 함수를 만들어 정렬 가능하다.
  • 17. #include<Algorithm>  binary search -이미 정렬 되어 있는 것에서 특정 데이터를 확인하는 알고리즘  merge -두 개의 정렬된 구간을 합칠 때 사용
  • 18. #include<Algorithm>  수치 – accumulate / inner_product  accumulate -지정 구간 속한 값을 더한다. -#include <numeric> 필요
  • 19. #include<Algorithm>  inner_porduct 두 입력 시퀀스를 내적 하는 알고리즘 //즉 각 시퀀스의 위치마다 곱하고 이를 다 더한다. //두 번째 입력 시퀀스는 첫 번째보다 크거나 같아야 한다.