• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
C++11(최지웅)
 

C++11(최지웅)

on

  • 924 views

kasa

kasa

Statistics

Views

Total Views
924
Views on SlideShare
923
Embed Views
1

Actions

Likes
3
Downloads
6
Comments
0

1 Embed 1

https://jujo00obo2o234ungd3t8qjfcjrs3o6k-a-sites-opensocial.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    C++11(최지웅) C++11(최지웅) Presentation Transcript

    • C++11 개인적으론 C++0b가 더 좋은데.. IMC Games 최지웅
    • 뉘시오? twitter.com/McZombie 최 지웅 프로그래밍 4년 차 2008. 문화부 게임 아카데미 8기 2009. 컴퓨터 공학전공 2008~현재. IMC Games 엔짂 팀 XXXXXX 개발 중. 운젂 가능 한글 해석 가능 파워 유부남
    • 대상난이도 C++11의 기초내용
    • C++11?추가된 C++ 문법C++98, C++03도 있었음.2011년 9월 12일 표준 제정.기존의 tr1, boost의 기능들이 추가됨.아직 Visual Studio에서 완벽히 지원하지 않음. 그래도 쓰지 않겠는가?
    • 초급>> | auto | using | for | nullptr | brace_init | array 초급++ move_sementic | Lamda | closure | STL Feature 그외 unique_ptr | tuple | bind
    • 초급 - >>띄어 쓰기 안 해도 됩니다.
    • 초급 - autoCompile Time에 Type 자동 지정.
    • 초급 - auto이런 식으로…벗! 이런 식으로 쓰다갂 주화 입마에 빠짐.
    • 초급 - auto 이런 거 라던지..이런 거 라던지…타이핑하기 귀찮은 것들만 사용하자.
    • 초급 - usingtypedef와 같다.
    • 초급 – RangeBased_forwhile이나 for_each보다 편함.
    • 초급 – nullptr포인터의 초기화p1과 p2가 같다곤 하지만…
    • 초급 – brace_init변수 혹은 객체의 초기화
    • 초급 – brace_init
    • 초급 – brace_init이런 방식으로도 초기화 됨.
    • 초급 – brace_init하지만 “=“는 아무 곳에나 붙이는 게 아님.
    • 초급 – arrayFixed Array
    • 초급 – arrayvector와 비교?array는 static, vector는 dynamicarray::swap은 선형시간.vector::swap은 상수시간.array는 tuple처럼 사용 가능vector는 불가능
    • 초급 – arrayC Array와 비교?array는 사이즈를 알고, C는 모른다array는 0 size 가능, C는 안됨array는 대입가능, C는 불가능array는 tuple처럼 사용 가능c는 불가능 C의 Array는 그만 쓰지 않겠는가?
    • 초급>> | auto | using | for | nullptr | brace_init | array 초급++ move_sementic | Lamda | STL Feature 그외 unique_ptr | tuple | bind
    • 초급++ – move_sementic흔핚 STL 컨테이너에 값 집어 넣기 벡턱 용량이 늘어나면 컨테이너 내용이 복사됨.
    • 초급++ – move_sementic컨테이너가 늘어날 때?C++11에서는 Move생성자가 호출이젂 버젂에서는 복사 생성자가 호출
    • 초급++ – move_sementic그렇다면 move sementic이 뭐냐? 말 그대로 메모리의 이동. 오브젝트를 다른 메모리로 이동시킨다.
    • 초급++ – move_sementic메모리 이동??? 메모리 이동의 조건?
    • 초급++ – move_sementicR-value reference 일 때.우리가 흔히 말하는 참조는 L-value Reference
    • 초급++ – move_sementicL-value와 R-value의 차이?L-valueaddress를 가짂 모든 것. - 이름을 가짂 변수R-valueaddress를 가지지 않은 것. - 이름이 없는 변수. - 34, “배고파” 등등… 호출핛 때 만들어지는 변수
    • 초급++ – move_sementic왜 저렇게 구분했을까?만약 R-Value로 생성되어 Function이 호출되면…- Function 안에서 데이터가 변경되었을 때- vi에 바로 적용되어 버립니다.
    • 초급++ – move_sementic&& 작성하는 법. 이런 방식으로 복사하지 말 고 포인터를 받는다.
    • 초급++ – move_sementic퍼포먼스의 차이는?아무튼 짱 빠르다… + DOD에 적합.컨테이너에 포인터만 넣을려고 하지 말자.
    • 초급++ – Lamda람다? 이것들은람각대충 지역 함수라 생각하면 편하다.
    • 초급++ – Lamda이런 느낌…이런 것보다는 functor사용에 유리…
    • 초급++ – Lamda예젂에는…이런… 노가다 타이핑을 했었다.속도만 안 빨랐어도 STL function들은 안 쓰는데… 람다를 사용하면 어떻게 될까?
    • 초급++ – Lamda이것으로 오케이!깔끔하게 써주면… 이런 느낌.
    • 초급++ – Lamda사실 더 좋은게… “복사를 이용해서 변수 넘겨주겠다”Local 변수도 넘겨 줄 수 있습니다.(참조와 복사 가능)
    • 초급++ – Lamda람다를 쓰세요.그렇다고 큰 함수를 만들 때 사용은 금물!람다는 짧고 깨끗해야 핚다.리턴이 여러 개 일 경우 함수로 사용하는 게 좋다.…뭐 잘 알아서 써 보자.
    • 초급++ – STL Feature::emplace_back
    • 초급++ – STL Featureconst_iterator support실제로 큰 차이는 없어 보인다.
    • 초급++ – STL Featureshrink_to_fit줄일 수 있음. vector, deque, string
    • 초급++ – STL Feature단방향 연결 리스트 : forward_liststd::list와 의 차이int형 1개에 대해서 list는 12바이트, f_list는 8바이트속도가 발톱만큼 forward_list가 빠르다그 외는 싱글리스트와 더블링크드 리스트 차이.
    • 초급>> | auto | using | for | nullptr | brace_init | array 초급++ move_sementic | Lamda | STL Feature 그외 unique_ptr | tuple | bind
    • 그 외 – unique_ptrauto_ptr을 대체할 놈autor_ptr은 deprecation됨.auto_ptr은 복사 표현으로 통해서 move를 구현.따라서 generic 알고리즘과 함께 사용핛 수 없다.generic알고리즘은 실제로 복사를 기준으로 만들어짐. 근데 아직 auto_ptr이나 shared_ptr의 좋은 점을 모르겠음…
    • 그 외 – tuplestd::pair의 일반화아직은 존재 이유를 모르겠다. …걍 구조체 써라.
    • 그 외 – bindbind1st와 bind2nd 일반화 버젼
    • 그 외 – bind근데… 람다가 있다. 어렵게 bind쓰지 말고 lamda 사용
    • 정리못 다룬 게 더 많다. thread, function, move, unicode support, 등등아직 컴파일 안 되는 것도 많다. range_based_for, brace_init, using…그래도 쓸만한 것은 굉장히 많다. range_based_for, brace_init, lamda, move_sementic, STL Feature, Arraymove_sementic과 lamda만으로도 행복 성능 업그레이드와 없어짂 노가다 코딩2010으로 프로젝트를 업그레이드 해 보아요.
    • 레퍼런스1) Overview of The New C++(C++0x) (Scott Meyers)2) http://cpp-next.com/archive/2010/10/howards-stl-move-semantics-benchmark/3) http://vsts2010.net/4) http://ikpil.com/695
    • C++11 질문할 게 있으시겠냐만은…