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




띄어 쓰기 안 해도 됩니다.
초급 - auto




Compile Time에 Type 자동 지정.
초급 - auto




이런 식으로…
벗! 이런 식으로 쓰다갂 주화 입마에 빠짐.
초급 - auto

            이런 거 라던지..




이런 거 라던지…
타이핑하기 귀찮은 것들만 사용하자.
초급 - using




typedef와 같다.
초급 – RangeBased_for




while이나 for_each보다 편함.
초급 – nullptr
포인터의 초기화




p1과 p2가 같다곤 하지만…
초급 – brace_init
변수 혹은 객체의 초기화
초급 – brace_init
초급 – brace_init
이런 방식으로도 초기화 됨.
초급 – brace_init
하지만 “=“는 아무 곳에나 붙이는 게 아님.
초급 – array
Fixed Array
초급 – array
vector와 비교?

array는 static, vector는 dynamic

array::swap은 선형시간.
vector::swap은 상수시간.

array는 tuple처럼 사용 가능
vector는 불가능
초급 – array
C 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_sementic
R-value reference 일 때.
우리가 흔히 말하는 참조는 L-value Reference
초급++ – move_sementic
L-value와 R-value의 차이?
L-value
address를 가짂 모든 것.
 - 이름을 가짂 변수
R-value
address를 가지지 않은 것.
 - 이름이 없는 변수.
 - 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 Feature
const_iterator support




실제로 큰 차이는 없어 보인다.
초급++ – STL Feature
shrink_to_fit




줄일 수 있음. vector, deque, string
초급++ – STL Feature
단방향 연결 리스트 : forward_list




std::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_ptr
auto_ptr을 대체할 놈




autor_ptr은 deprecation됨.
auto_ptr은 복사 표현으로 통해서 move를 구현.
따라서 generic 알고리즘과 함께 사용핛 수 없다.
generic알고리즘은 실제로 복사를 기준으로 만들어짐.
                           근데 아직 auto_ptr이나 shared_ptr의
                               좋은 점을 모르겠음…
그 외 – tuple
std::pair의 일반화




아직은 존재 이유를 모르겠다.



                   …걍 구조체 써라.
그 외 – bind
bind1st와 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, Array

move_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




          질문할 게
        있으시겠냐만은…

Más contenido relacionado

La actualidad más candente

이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2현찬 양
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리Injae Lee
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinDong Chan Shin
 
Effective modern cpp item41
Effective modern cpp item41Effective modern cpp item41
Effective modern cpp item41진화 손
 
3D 프로그래밍의 이해. 2011.4.23
3D 프로그래밍의 이해. 2011.4.233D 프로그래밍의 이해. 2011.4.23
3D 프로그래밍의 이해. 2011.4.23SungKee Min
 
모어 이펙티브 c++ 1,2장 스터디
모어 이펙티브 c++ 1,2장 스터디모어 이펙티브 c++ 1,2장 스터디
모어 이펙티브 c++ 1,2장 스터디quxn6
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1연우 김
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디quxn6
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식TonyCms
 
Effective cpp
Effective cppEffective cpp
Effective cppTonyCms
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summarySehyeon Nam
 
Effective c++ Chapter6
Effective c++ Chapter6Effective c++ Chapter6
Effective c++ Chapter6세빈 정
 
모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6quxn6
 
Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Hyun Sung Yoon
 

La actualidad más candente (19)

이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshin
 
5 6 1
5 6 15 6 1
5 6 1
 
Effective modern cpp item41
Effective modern cpp item41Effective modern cpp item41
Effective modern cpp item41
 
3D 프로그래밍의 이해. 2011.4.23
3D 프로그래밍의 이해. 2011.4.233D 프로그래밍의 이해. 2011.4.23
3D 프로그래밍의 이해. 2011.4.23
 
모어 이펙티브 c++ 1,2장 스터디
모어 이펙티브 c++ 1,2장 스터디모어 이펙티브 c++ 1,2장 스터디
모어 이펙티브 c++ 1,2장 스터디
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
 
Effective cpp
Effective cppEffective cpp
Effective cpp
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summary
 
Effective c++ Chapter6
Effective c++ Chapter6Effective c++ Chapter6
Effective c++ Chapter6
 
모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6
 
C++11
C++11C++11
C++11
 
Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)
 

Destacado

C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론Huey Park
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crowJaeseung Ha
 
초보를 위한 C++11
초보를 위한 C++11초보를 위한 C++11
초보를 위한 C++11Minhyuk Kwon
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로Jaeseung Ha
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부Gwangwhi Mah
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들MinGeun Park
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11OnGameServer
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
C++11에서 주의해야할 것들
C++11에서 주의해야할 것들C++11에서 주의해야할 것들
C++11에서 주의해야할 것들Sangwook Kwon
 

Destacado (12)

c++11
c++11c++11
c++11
 
C++11
C++11C++11
C++11
 
[C++ adv] c++11
[C++ adv] c++11[C++ adv] c++11
[C++ adv] c++11
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crow
 
초보를 위한 C++11
초보를 위한 C++11초보를 위한 C++11
초보를 위한 C++11
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
C++11에서 주의해야할 것들
C++11에서 주의해야할 것들C++11에서 주의해야할 것들
C++11에서 주의해야할 것들
 

Similar a C++11(최지웅)

Effective c++chapter1 and2
Effective c++chapter1 and2Effective c++chapter1 and2
Effective c++chapter1 and2성연 김
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorialLee Seungeun
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Nam Hyeonuk
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)HYUNJEONG KIM
 
Template at c++
Template at c++Template at c++
Template at c++Lusain Kim
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Dong Chan Shin
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4성연 김
 
Effective STL 1~4장 정리
Effective STL 1~4장 정리Effective STL 1~4장 정리
Effective STL 1~4장 정리Shin heemin
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기라한사 아
 
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...Seok-joon Yun
 
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼라한사 아
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
Effective c++ 3
Effective c++ 3Effective c++ 3
Effective c++ 3현찬 양
 
[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26Seok-joon Yun
 
모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디quxn6
 
병렬 프로그래밍2
병렬 프로그래밍2병렬 프로그래밍2
병렬 프로그래밍2준혁 이
 

Similar a C++11(최지웅) (20)

Effective c++chapter1 and2
Effective c++chapter1 and2Effective c++chapter1 and2
Effective c++chapter1 and2
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
 
C++11
C++11C++11
C++11
 
Changes in c++0x
Changes in c++0xChanges in c++0x
Changes in c++0x
 
Template at c++
Template at c++Template at c++
Template at c++
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
 
Effective STL 1~4장 정리
Effective STL 1~4장 정리Effective STL 1~4장 정리
Effective STL 1~4장 정리
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기
 
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
 
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
Effective c++ 3
Effective c++ 3Effective c++ 3
Effective c++ 3
 
[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26
 
모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디
 
병렬 프로그래밍2
병렬 프로그래밍2병렬 프로그래밍2
병렬 프로그래밍2
 

Más de changehee lee

Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicschangehee lee
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetizationchangehee lee
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기changehee lee
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphchangehee lee
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)changehee lee
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!changehee lee
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developingchangehee lee
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your gameschangehee lee
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance korchangehee lee
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_reschangehee lee
 

Más de changehee lee (20)

Visual shock vol.2
Visual shock   vol.2Visual shock   vol.2
Visual shock vol.2
 
Shader compilation
Shader compilationShader compilation
Shader compilation
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphics
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetization
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
Paper games 2013
Paper games 2013Paper games 2013
Paper games 2013
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
 
V8
V8V8
V8
 
Wecanmakeengine
WecanmakeengineWecanmakeengine
Wecanmakeengine
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraph
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Light prepass
Light prepassLight prepass
Light prepass
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developing
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your games
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance kor
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_res
 

C++11(최지웅)

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