Language/C++

C++ 11 :: Auto

VallistA2014. 10. 20. 20:29

C++ 11 :: Auto


C++ 11에서 가장 탈바꿈을 많이한 메소드라고 하면 Auto가 아닐까 싶습니다.

기존의 Auto가 무슨 일을 하셨는지 알고 계시나요? 아마도 모르시는분들이 대다수 일텐데요.

Auto의 유래에 대해서 조금 짚고 사용법에대해 넘어가도록 하겠습니다.


C++을 조금만 공부해도 mutable, register, extern, static, typedef 이러한 Storage Class Specifier는 아실겁니다.

위의 함수들은 각각의 종류대로 프로그래머들에게 필요한 Storage Class Specifier입니다.


하지만 이 사이에 Auto가 끼어있었습니다.


extern 은 전역변수를 정의하기위해 필요한 Storage Class Specifier고..

static 은 뭐..

등등..


그렇게 쓰일때가 많았지만, Auto의 경우에는 전혀 쓰일 필요가 없었습니다.

Auto가 과거에 사용용도는 자료형의 재정의 였습니다.

즉 int a = 0; 만 해도 될 것을 auto int a = 0; 를 해주는 것 이였죠.


하지만 누가 이렇게 하겠습니까? 굳이 4글자를 더 늘려서 프로그래머의 코딩을 더 느리게 할 필요가 없었습니다.


이 쓰임새가 없던 auto를 C++ 11에서는 재 단장 하게됩니다.


C++ 11에서 Auto는 컴파일러 단에서 '자료형'을 결정해줍니다.

무슨 자료형이냐고요? 모든 자료형 '모두 다' 결정을 해줍니다.


예제를 보도록 합시다.



아시겠나요? 우리는 이제 더이상 앞에 그에 맞는 형을 써줄 필요가 없습니다.

아직은 감이 와 닿지 않으실 것 입니다.

이렇게 사용할 수 있는 예제를 한개더 보여드리겠습니다.



먼저 위 코드는 기존 C++ 에서의 Vector 초기화 입니다.



그리고 위 코드는 C++ 11 에서의 Vector 초기화 입니다.


달라지신게 보이실 것 입니다.


기존의 C++ 에서는 (03 부터지만) std::vector<형>::iterator itr 이라는 긴 코드를 삽입을 해주었습니다.

하지만 C++ 11에서는 std::vector<형>::iterator 라는 긴 구문대신, auto로 대체함으로써 코드의 길이를 짧게 하였습니다.


이 예제를 보시면 알겠지만, Auto는 for문 에서도 쓸 수 있고, 아무대서나 다 사용이 가능합니다.


이런 분들이 계실 것 입니다.

"Auto가 속도가 느리진 않을까요? 컴파일러 단에서 연산하는 것 인데 .. ?"

천만의 말씀! 고작 우리가 이렇게 작은 연산을 한다고 컴파일러 단에 무리가 가지는 않습니다.


하지만, Auto 는 편리한 대신 가독성을 좋지 못하게 만들어줍니다.

가독성이 필요한 곳이면 Auto를 쓰지말아야 겠죠?

'Language > C++' 카테고리의 다른 글

C++ 11 :: Uniform Initialization  (0) 2014.10.20
C++ 11 :: Range Based For  (0) 2014.10.20
C++ :: 문자열 split (string tokenizer)  (2) 2014.06.01
C++ :: string 문자열  (0) 2014.06.01
C++ :: 절대값을 사용하는 문제 1  (0) 2014.05.18

댓글

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.
현재는 이 블로그를 운영하지 않습니다.
vallista.kr 로 와주시면 감사하겠습니다!

자고 싶습니다. ㅠㅠ

Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today :

Total :

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment