Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
[1116 박민근] c++11에 추가된 새로운 기능들
Next
Download to read offline and view in fullscreen.

17

Share

Download to read offline

C++11

Download to read offline

휴먼 디자인 프로젝트 for 게임
팀 프로젝트 스터디 자료입니다.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

C++11

  1. 1. C++11 NHN NEXT 이선협
  2. 2. C++11  ISO(국제 표준 기구)에서 2011년 8월 12일에 승인된 C++ 프로그래밍 언어의 최신판.  새로운 표준 문법이 추가됨  최근 C++14가 등장  키워드를 통해 Step By Step으로 진행
  3. 3. auto
  4. 4. auto  대입되는 값의 자료형에 따라 변수의 타입이 정할 수 있는 키워드  네이밍이 긴 클래스 혹은 템플릿을 이용하여 변수형이 길어질 경우에 유용하다. 이 경우에는 n은 int형이다 이런 경우는 없겠지만 이렇게 길면 난감..
  5. 5. auto  이런 상황에 유용하다
  6. 6. auto  Range for와 함께 사용하면 더 좋다 코드가 상당히 많이 단축되었다
  7. 7. Range for
  8. 8. Range for  다른 언어의 for each와 같다.  전 프로젝트 처럼 list형 자료형 뿐만 아니라 배열도 가능하다.  프로그래머가 범위를 착각하여 댕글링 포인터를 가르킬 가능성을 줄여준다.
  9. 9. lambda
  10. 10. lambda  C++에 원래 없던 익명 함수기능.  단지 정렬하기 위해 operator 함수를 만드는 행위를 하지 않아도 된다.
  11. 11. lambda 역순으로 정렬하기 위해 compare 함수를 만들었다 한두번 쓰고 말 함수 그냥 이렇게 쓰자!
  12. 12. lambda
  13. 13. lambda Error or
  14. 14. lambda  Capture
  15. 15. enum class
  16. 16. enum class  기존의 enum은 type이 not type-safe하다. 기본적으로 정수형 타입을 가지고 있기 때문이다.  그리고 모든 데이터가 4바이트라는 문제점이 있다.
  17. 17. enum class  다음과 같은 코드는 C++03의 enum이 왜 위험한지를 알려준다.
  18. 18. enum class  컴파일 단계에서 서로 다른 것을 걸러내기 때문에 프로그래머의 실수를 막아준다.
  19. 19. enum class  C++11의 enum은 자료형을 바꿀 수 있다.
  20. 20. nullptr
  21. 21. nullptr  기존 NULL의 문제점은 상수 0과 NULL이 같다는 점이다.  nullptr은 NULL이 상수였기 때문에 만들어지는 이상한 코드를 예방시켜준다. True
  22. 22. nullptr NULL이 상수라서 가능한 코드 NULL이 상수라서 가능한 코드
  23. 23. std::array
  24. 24. std::array  기존의 배열은 범위를 벗어난 잘못된 메모리 접근이 일어날 수 있다.  하지만 std::array는 기존의 배열을 대체할 수 있는 안전한 배열 타입이다.  vector와 달리 크기가 고정되어 새로운 항목을 추가할 수 없지만 오버헤드가 적다.
  25. 25. std::array  다음과 같이 사용 가능하다.
  26. 26. std::forward_list
  27. 27. std::forward_list  기존의 STL은 더블링크드리스트인 std::list만 지원했다.  C++11이 등장하면서 싱글링크드리스트인 std::forward_list가 등장했다.  당연히 std::list보다 메모리를 적게 사용한다.  한 방향으로만 순회가 가능하다.
  28. 28. std::forward_list  다음과 같이 사용 가능하다.
  29. 29. std::unordered_...
  30. 30. std::unordered_...  std::unordered_set  std::unordered_map  std::unordered_multiset  std::unordered_multimap  위 4가지가 추가되었다.  기존의 set, map, ...등과 다른 점은 자료구조과 해시 테이블로 바뀌었다는 점이다.  기존의 set, map이 O(log n)으로 접근한다면 std::unordered_...은 최소 O(1), 최대 O(n)이 걸린다.
  31. 31. std::unordered_...  기존과 사용방법은 같지만 내부 동작 방식만 다르다.
  32. 32. std::tuple
  33. 33. std::tuple  2개 이상의 다른 데이터 타입을 하나로 묶을 수 있다.  2개 이상의 리턴 값이 필요할 때 사용할 수 있다.
  34. 34. std::tuple
  35. 35. std::tuple
  36. 36. shared_ptr
  37. 37. shared_ptr  객체의 소유권이 카피가 가능하도록 만들어진 포인터  레퍼런스 카운팅 방식을 사용하고 있다. (Object-C, Cocos2d-x, ...)  특정 포인터를 복사한 shared_ptr 객체가 모두 제거가되면 (레퍼런스 카운트가 0이면) 해당 포인터 를 가르키는 메모리가 free 된다.
  38. 38. shared_ptr  reset()은 해당 메모리를 free하겠다는 뜻이다. p1.reset()을 하더라도 p2는 int(10)을 바라보고 있기 때문에 완전히 해제되지 않는다. p2.reset()을 해야 레퍼런스 카운트가 0이되어 메모리가 해제된다.
  39. 39. unique_ptr
  40. 40. unique_ptr  객체의 소유권이 오직 한 포인터만 가질 수 있는 스마트 포인터
  41. 41. unique_ptr 에러 발생
  42. 42. unique_ptr  malloc으로 할당할 경우 custom deleter가 필요하다.  출처 : http://bunhere.tistory.com/407
  43. 43. std::chrono
  44. 44. std::chrono  시간을 측정하는 라이브러리  나노 밀리 초 단위도 측정할 수 있다.
  45. 45. std::chrono  다양한 시간으로 변환 가능  출처 : http://jacking.tistory.com/988
  46. 46. C++11 thread
  47. 47. std::thread  쉽게 쓰레드를 만들 수 있다.  아래 코드만으로는 동기화가 되지 않는다.
  48. 48. std::thread
  49. 49. std::thread
  50. 50. sleep_for, sleep_until
  51. 51. std::mutex  쓰레드를 동기화하지 않으면 데이터가 변할 위험이 있다.  그럴 위험이 있을 경우 mutex를 사용한다. 데이터가 변하는 코드 한 객체를 여러 쓰레드에서 사용하기 때문
  52. 52. std::mutex  mutex를 사용하면 안전해진다.
  53. 53. std::lock  mutex만으로는 데드락이 발생할 가능성이 높다. 데드락 걸리는 코드
  54. 54. std::lock  std::lock을 이용하면 동시에 lock하기 때문에 안전하다.
  55. 55. call_once 프로세스 동작 중 한번만 실행 가능
  56. 56. lock_guard  생성될 때 lock  소멸할 때 unlock
  57. 57. 여러가지 동기화 방법...  unique_lock, recursive_mutex, timed_mutex, recursive_timed_mutex ... 너무 많다!!  알아서 공부해봅시다.
  58. 58. std::async, std::future  std::async  함수를 비동기로 호출 할 수 있도록 해준다.  std::future  선언 당시에는 아무런 값도 가지고 있지 않지만 후에 가지게 될 경우에 사용한다.
  59. 59. std::async, std::future 동기라면 2초 걸릴작업이 1초만에 작업 완료 launch를 deferred로 바꿔주면 future::get을 실행할때 함수가 동작함
  60. 60. 참고 자료  http://bunhere.tistory.com/407  http://wonderfuldream.tistory.com/333  http://bab2min.tistory.com/335  http://blog.naver.com/hextrial?Redirect=Log&logNo=60205904579  http://jacking.tistory.com/tag/VC11
  61. 61. 감사합니다
  • cyberhoon

    Oct. 2, 2018
  • wooseokkim161

    May. 23, 2017
  • LeehwanChoi

    May. 18, 2017
  • mistryvaibhavi

    Jan. 14, 2017
  • ssuser7d9a16

    May. 16, 2016
  • ihjang

    Mar. 13, 2016
  • jisungahn2

    Jan. 7, 2016
  • morning_willow

    Nov. 25, 2015
  • ssuser714e89

    Jul. 12, 2015
  • ssuser9125e4

    Feb. 8, 2015
  • teraslee0

    Feb. 7, 2015
  • yujunlee14

    Oct. 20, 2014
  • jmjeong

    Apr. 2, 2014
  • scmaro

    Apr. 2, 2014
  • inboklee

    Apr. 2, 2014
  • ulty97

    Apr. 2, 2014
  • tatis3

    Apr. 2, 2014

휴먼 디자인 프로젝트 for 게임 팀 프로젝트 스터디 자료입니다.

Views

Total views

4,714

On Slideshare

0

From embeds

0

Number of embeds

1,143

Actions

Downloads

114

Shares

0

Comments

0

Likes

17

×