auto는 "타입추론", "데이터 타입 추론", "자동 데이터 추론", "초기화 값에 따라 알아서 데이터 타입을 정해주는 키워드"라는 많은 수식어가 있습니다.
auto 키워드는 선언한 변수나 람다식의 타입을 컴파일러에게 추론하도록 맡깁니다.
auto a = 10; //int type
auto a = 1.1; //float type
auto a = "c"; //char type
auto a = "Hello"; //string type
auto a = {1, 2, 3}; //array type
변수를 정하지 않아도 알아서 변수로 설정해주는 키워드 입니다.
auto를 사용해서 &, *와 같은 특성(복사가 되지않고 주소를 가리키거나 참조를 하는)을 이용하는 방법도 있습니다.
vector<int> v({1, 2, 3, 4, 5}); //initialize
for(auto it=v.begin();it != v.end();it++)
*it += 2;
//위 코드는 iterator를 사용해서 모든 벡터값에 access
for(auto& a:v) *it += 2;
//동일한 코드이다.
또 auto와 const를 함께 사용할 수도 있습니다.
const auto = 1;
const auto = "HelloWorld";
/*이런식으로 사용하게 되면 각각 const int, const string
처럼 사용될 수 있음을 알 수 있습니다.*/
만약에 출력을 해줄 경우에는 복사를 해서 사용하는 것보다 참조를 해서 활용하는 경우가 더 많기때문에 아래와 같이 사용하는 것을 추천드립니다.
for(const auto& a: v) cout << v ,, '\n';
이와 같이 사용하게 되면 auto가 v를 참조해서 사용하는 것으로 받아드리시면 될 것 같습니다.