본문 바로가기
개념공부/C, C++, IDE

[C++] 타입 추론 auto, for loop auto

by Zach Choi 2024. 7. 4.
728x90
반응형
auto 키워드

 

auto는 변수의 자료형을 대신에 사용하는 키워드 입니다. 자료형에 auto를 사용하면, 컴파일 시간에 변수의 자료형을 추론합니다.

int x = 1; // 변수  x 의 자료형을 int로 선언해야 함

auto x = 1; // 변수 x의 자료형을 컴파일 시간에 int로 추론함

 

auto 키워드의 장점

 

auto 키워드는 2가지 장점이 있습니다. 첫번째는 긴 변수명을 대체할 수 있다는 점입니다.

vector<vector<vector<string>>> str = Print(); // 자료형이 길죠?

auto str = Print(); // 컴파일 시간에 Print 함수의 반환 자료형을 추론하므로,
// 긴 자료형 작성이 불필요합니다.

 

두번째 장점은, 코드 수정이 용이합니다. 함수의 출력 자료형이 변경되더라도 함수가 호출된 모든 부분을 찾아 하나하나 고칠 필요가 없습니다. auto 자료형으로 선언하였기에, 컴파일 시간에 자동으로 추론되기 때문입니다.


 

auto 키워드를 사용한 For loop

 

For 반복문에도 auto 키워드를 사용할 수 있습니다. Iterate 되는 리스트 내 변수의 자료형을 추론합니다.

아래와 반복문 구문에서 변수 i의 자료형을 list를 고려해 자동으로 추론합니다.

vector<int> list = {1, 2, 3};

for (auto i : list){
	cout << i << endl;
}

 

For 반복문 내 auto 키워드의 다양한 사용법

 

For 반복문 내에서 auto 키워드는 4가지 형태로 사용됩니다.

for (auto i : list)
for (auto& i : list)
for (const auto i : list)
for (const auto& i : list)

1. 아래 반복문에서 i는 list의 값을 복사한 새로운 변수 입니다. 따라서 값을 복사하는 연산이 추가됩니다.(성능 저하) 하지만 i를 통해 list에 접근하여 값을 변경하는 것은 불가능 합니다. (안전성 확보)

for (auto i : list)

2. 아래 반복문에서 i는 list를 참조한 것으로, 값을 복사하는 연산은 없습니다. 하지만 i를 통해 list의 값에 접근할 수 있어 안전하지 않다는 단점이 있습니다.

for (auto& i : list)

3. 아래 반복문에서 i는 list의 값을 복사한 새로운 변수로 연산이 추가됩니다. (성능 저하) 하지만 i 변수 앞에 const를 추가하였기에, for 문 내에서 i 의 값을 수정할 수 없습니다.

for (const auto i : list)

4. 아래 반복문의 구문을 가장 많이 사용합니다. 복사 연산이 추가되지 않고 list 값이 수정되는 것을 방지할 수 있기 때문입니다.

for (const auto& i : list)

 

 


본 글은 아래 포스트를 참고하였습니다.

 

참조 : https://velog.io/@monomorium/C-for-loop%EC%97%90%EC%84%9C%EC%9D%98-const-auto

참조 : https://todamfather.tistory.com/54

 

728x90
반응형