[C++adv] STL 사용법과 주의 사항

6,455 views

Published on

Published in: Education
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,455
On SlideShare
0
From Embeds
0
Number of Embeds
195
Actions
Shares
0
Downloads
48
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

[C++adv] STL 사용법과 주의 사항

  1. 1. STL 사용법과 주의 사항 C++ ADVANCED 박민근
  2. 2. Generic Programming
  3. 3. Template C++에서 Generic Programming을 만드는 기법 데이터 타입에 의존하지 않는 일반화 프로그래밍
  4. 4. Template 예제
  5. 5. 중복된 코드는 문제를 야기 한다. 오버 로딩이 해결 방법이 아니다. Double? UINT? Long?? 이 추가 되면?
  6. 6. Template 예제
  7. 7. STL (Standard Template Library) 자주 쓰는 자료 구조와 알고리즘을 템플릿을 이용하여, 구현해놓은 C++의 표준 라이브러리
  8. 8. 자료구조 (컨테이너) Vector List Map Set Deque … 알고리즘 Sort Find … STL
  9. 9. STL List 일반적인 이중 연결 리스트 (Double Linked List)
  10. 10. STL List 특징 1.고정 길이인 배열에 비해 길이가 가변적이다. 2.중간에 데이터 삽입, 삭제가 용이하다. 사용하는 경우 1. 저장할 데이터 개수가 가변적이다. 2. 중간에 데이터 삽입 삭제가 자주 일어난다.
  11. 11. STL List - 문제점 1. 객체는 삭제되지 않는다. (STL 컨테이너 공통) 2. 캐릭터에 ID가 있는 이유가 무엇인가?
  12. 12. STL List – 주의할 점 1.순차적인 접근에서? 2.리스트에 해당 데이터가 존재하는지 어떻게 확인할까?
  13. 13. STL List 주의점 1. 검색을 자주 하는 데이터에 맞지 않다. (=> map) 2. 인덱스를 이용해서 데이터를 랜덤하게 접근하는 경우에는 느리다 (=> vector)
  14. 14. STL Vector STL 에서 제공 하는 가변 배열 특징 1.저장할 데이터 개수가 가변적이다. 2.임의의 데이터에 바로 접근할 수 있다. 3.중간에 삽입/삭제가 용이하지 않다. (느리다)
  15. 15. STL Vector – 삽입/삭제
  16. 16. STL Vector 유용한 경우 1.저장할 데이터 개수가 가변적이다. 2.중간에 데이터 삽입/삭제가 없다. 3.저장할 데이터 개수가 적거나, 검색이 잦지 않다. 4.데이터 접근을 랜덤하게 하고 싶다. (인덱스)
  17. 17. Vector vs List
  18. 18. STL Vector – 주의할 점
  19. 19. STL Vector – Capacity Capacity 벡터가 담을 수 있는 용량. Capacity를 넘어 간다면??
  20. 20. STL Vector – Capacity 1 2 3 4 Capacity : 4 5 1 2 3 4 Capacity : 8 새로운 공간을 할당한다 새로운 공간에 값을 복사한다
  21. 21. STL Vector – reserve 미리 공간을 할당한다 -> 재할당이 일어나지 않는다
  22. 22. STL Vector – resize
  23. 23. STL vector 주의점 1. 중간에 데이터의 삽입/삭제가 잦은 경우에는 맞지 않다. (=> list) 2. 처음에 데이터를 세팅할 때 reserve()를 활용한다.
  24. 24. STL map <Key, Value> 연관 컨테이너 Red – Black 트리 구조 (균형 이진 트리) 정렬된 트리 구조 map<Key, Value> 변수이름
  25. 25. STL map 유용한 경우 1.많은 자료에서 키값을 통한 빠른 검색이 주요 목적이다 2.정렬해야 한다. 3.빈번하게 삽입/삭제하지 않는다. Q. Map과 List에서 무엇이 삭제가 더 빠를까?
  26. 26. STL map의 사용법
  27. 27. STL map의 주의 사항 이 순간 새 원소가 생성 된다!! 잘못된 접근!
  28. 28. STL Deque Double Ended Queue 순차적으로 처리하는 데이터에 활용 한다 Ex. 메시지 큐, 패킷 처리, Task 처리등…
  29. 29. STL Deque 특징 1.크기가 가변적이다. 2.앞과 뒤에서 삽입과 삭제가 좋다. 3.중간에 데이터 삽입/삭제가 용이하지 않다. 4.랜덤 접근이 가능하다. 5.검색이 용이하지 않다.
  30. 30. STL Deque vs Vector
  31. 31. STL Set 특징 1.키값만 있는 컨테이너 2.중복된 키값이 들어갈 수 없다. 3.키값이 존재하는지 검색할 때 사용 한다. 4.정렬해야 할 때. 5.많은 자료를 저장하고, 검색 속도가 빨라야 할 때
  32. 32. STL Set 사용예
  33. 33. STL과 포인터 STL의 원소는 값을 복사한다!!
  34. 34. STL과 포인터
  35. 35. STL과 Iterator
  36. 36. STL과 Iterator
  37. 37. 참고 자료 • Think About STL (최흥배/한빛미디어)
  38. 38. 과제 C++11에 추가된 lamda 함수에 대해서 공부하여, Lamda로 functor를 구현하여 아래 요구사항을 구현하여라

×