Range-based for loop and Auto
J-Shine
Range-based for loop(C++11 이상에서 지원)
#include <bits/stdc++.h>
using namespace std;
int main() {
int arr[] = { 1, 2, 3, 4, 5 };
for (auto e : arr) {
cout << "e: " << e << " ";
}
}
범위 기반 for문이 기존 for문과 다른 점
- 범위 기반 for문은 배열과 vector 등 순회가 가능한 데이터타입을 처음부터 끝까지 순회하는 연산을 한다.
-> 섬세한 조절이 힘들다. - 범위 기반 for문은 순회할 때 element에 배열의 값을 복사한다(deep copy).
-> O(N)의 시간복잡도를 가진다.
reference(&) 사용
reference(&)를 사용하면 deep copy를 피할 수 있다. -> 시간복잡도 O(1)
auto
auto는 타입추론변수이다.
변수 생성과 함께 초기화를 해주어야 그것을 바탕으로 타입을 추론한다.