Language/C++
C++ 11 :: AutoVallistA2014. 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 :
Lately Post
Lately Comment