범위 기반 for문 | 스코프 연산자 | 메모리 구조 | 수박수박수

김여울·2025년 6월 18일

내일배움캠프

목록 보기
25/139

for문

일반적인 for문

인덱스를 사용해 배열이나 벡터의 각 요소에 접근하는 방식

→ 인덱스가 필요하거나 수정 가능한 참조가 필요하다면 범위 기반 for문 대신 일반 for문을 사용하는 것이 좋음

#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<int> numbers = {1, 2, 3, 4};

    // 일반적인 for문
    for (int i = 0; i < numbers.size(); i++) {
        cout << numbers[i] << endl;  // numbers[i]로 요소에 접근
    }

    return 0;
}

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

배열이나 벡터 등의 모든 요소를 순차적으로 처리할 때 매우 간단하고 직관적인 방식

for (int num : numbers) 에서는 numbers 라는 컨테이너(배열, 벡터, 리스트 등)의 각 요소를 하나씩 가져와 num 에 대입함

#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<int> numbers = {1, 2, 3, 4};

    // 범위 기반 for문
    for (int num : numbers) {
        cout << num << endl;  // 각 요소를 순차적으로 num에 대입하여 사용
    }

    return 0;
}

수정 가능한 참조 사용

for (auto& num : numbers) {
    num *= 2;  // numbers의 각 요소를 2배로 수정
}

auto& 를 사용해 참조를 전달하면 값을 수정할 수도 있음

:: 스코프 연산자

:: 스코프 해석 연산자(Scope Resolution Operator)

  • 클래스, 구조체, 네임스페이스 등의 멤버에 접근할 때 사용한다
AMyActor::Step()

AMyActor 클래스의 멤버 함수 Step()을 호출
::는 해당 함수가 어느 클래스(또는 네임스페이스)에 속해 있는지 명시하는 역할을 함

  • AMyActor 클래스 이름
  • Step() 그 클래스에 정의된 멤버 함수
  • :: Step() 함수가 AMyActor 클래스에 속해 있음을 나타냄

::"이 함수나 변수는 특정 클래스의 멤버이다"라고 컴파일러에 알려주는 역할을 한다

메모리 구조


수박수박수

6월 18일 코드카타

#include <iostream>
#include <string>
#include <vector>

using namespace std;

string solution(int n) {
    vector<string> letters; // 한글은 2바이트 문자여서 char 불가능, string을 사용하여 "수"와 "박"을 저장
    // string 벡터 이름이 letters
    letters.reserve(n);  // 벡터의 크기를 미리 예약하여 성능 최적화, 벡터는 크기를 자동으로 늘리지만, 한 글자씩 늘릴 때마다 속도가 느려짐
    
    for (int i = 0; i < n; ++i)
    {
        letters.push_back((i % 2 == 0) ? "수" : "박");  // i가 짝수면 "수" 추가, 홀수면 "박" 추가.
    }
    
    string result;  // 결과를 담을 빈 문자열 생성
    // 범위 기반 for문을 사용하여 letters 벡터의 모든 문자열을 s에 추가
    for (const string& s : letters) // const: 읽기 전용, &s: 참조로 받아서 복사 비용 절약
    {
        result += s;    // result에 문자열을 이어 붙임
    }
    
    return result;
}

int main() {
    cout << solution(4) << endl; // 출력: 수박수박
    cout << solution(3) << endl; // 출력: 수박수
    return 0;
}

처음에는 vector<char> letters; 로 했는데 한글은 2바이트이기 때문에 char를 사용할 수 없다. string으로 사용하고 ""를 사용해야 한다.

0개의 댓글