'C++' Range-based for loop using 'const reference'

토스트·2024년 12월 10일
0

'C++' basic

목록 보기
5/35

범위 기반 for 문 (Range-based for loop)

범위 기반 for문은 컨테이너나 배열과 같은 컬렉션을 순회할 때 사용하는 간단한 구문입니다. 기존의 for문에 비해 더 직관적이고 코드가 간결해집니다.

for (Type Variable : Collection) { }

  • Type : 반복할 컬렉션의 각 요소의 타입을 나타냅니다.
  • Variable : 컬렉션의 각 요소를 하나 씩 받아오는 변수입니다.
  • Collection : 순회할 대상이 되는 배열이나 컨테이너(std::vector, std::list 등)입니다.
#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    
    // Range-based for loop
    for (const int & x : vec) { // const reference 사용 예시
        cout << x << " ";  // 각 요소를 출력
    }
    
    return 0;
}

결과값

12345

장점

  • 간결함 : 변수 초기화나 반복 조건을 작성할 필요가 없어서 코드가 더 간결하고 읽기 쉬워집니다.
  • 실수 감소 : 인덱스 범위나 반복 조건을 잘못 작성하는 실수를 줄일 수 있습니다.
  • 가독성 : 컬렉션의 각 요소를 명확하게 순회할 수 있어 코드 가독성이 높아집니다.

단점

  • 특정 요소 접근 어려움 : 컬렉션의 모든 요소를 순회하는 특성상 특정 인덱스나 요소에 대한 접근이 불가능합니다. 따라서 인덱스를 사용하는 작업이 필요한 경우에는 기존의 for문을 사용해야 합니다.
  • 복잡한 반복 제어 어려움 : 조건에 따라 반복을 중단하거나 건너뛰는 등의 제어가 복잡할 수 있습니다.

const reference

값에 직접 접근하되, 값을 변경할 수 없도록 설정합니다. 복사를 피할 수 있어 성능이 향상되고, 값 변경을 방지할 수 있어 코드의 안정성을 높입니다.

  • 참조(&) : 해당 변수를 복사하지 않고 직접 참조한다는 의미입니다. 즉, 메모리 상의 원본 데이터를 복사하지 않고 직접 접근하게 되어, 대체로 성능이 더 효율적입니다. 특히 큰 객체나 데이터 구조를 다룰 때 유리합니다.
  • 상수(const) : const를 붙이면 해당 변수를 읽기 전용으로 만들게 됩니다. 즉, 참조된 값은 변경할 수 없게 되며, 이를 통해 불변성을 보장할 수 있습니다.

0개의 댓글