Menu
Coddy logo textTech

요소 접근하기

Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨 — 56개 중 12번째.

이제 벡터를 생성하고 요소를 추가할 수 있게 되었으므로, 벡터에서 특정 요소를 가져오는 방법을 알아야 합니다. C++는 개별 요소에 접근하는 두 가지 주요 방법을 제공합니다: 대괄호 연산자와 .at() 메서드입니다.

대괄호 연산자 []는 일반 배열과 똑같이 작동합니다. 액세스하려는 요소의 인덱스를 지정합니다:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // 10을 가져옵니다
int third = numbers[2];    // 30을 가져옵니다

.at() 메서드는 요소에 접근하는 대안적인 방법을 제공하며, 중요한 차이점이 있습니다. 바로 경계 검사(bounds-checking)를 포함한다는 점입니다:

int first = numbers.at(0);    // 10을 가져옵니다
int third = numbers.at(2);    // 30을 가져옵니다

주요 차이점은 안전성입니다. 존재하지 않는 인덱스에 접근하려고 하면 []는 예측할 수 없는 동작을 유발할 수 있지만, .at()는 오류를 알리기 위해 예외를 발생시킵니다. 학습 목적상 두 방법 모두 잘 작동하지만, .at()는 벡터의 유효하지 않은 위치에 접근하는 것에 대해 추가적인 보호를 제공합니다.

challenge icon

챌린지

쉬움

대괄호 연산자와 .at() 메서드를 모두 사용하여 벡터에서 특정 요소를 검색함으로써 벡터 요소 접근을 보여주는 프로그램을 작성하세요.

다음과 같은 입력이 제공됩니다:

  • 벡터의 요소 개수를 나타내는 정수 n
  • 벡터를 채울 n개의 정수
  • 접근할 첫 번째 인덱스를 나타내는 정수 index1
  • 접근할 두 번째 인덱스를 나타내는 정수 index2

프로그램은 다음을 수행해야 합니다:

  1. data라는 이름의 std::vector<int>를 생성합니다.
  2. push_back()을 사용하여 입력받은 n개의 숫자를 각각 벡터에 추가합니다.
  3. 대괄호 [] 연산자를 사용하여 index1에 있는 요소에 접근하고 이를 value1이라는 변수에 저장합니다.
  4. .at() 메서드를 사용하여 index2에 있는 요소에 접근하고 이를 value2라는 변수에 저장합니다.
  5. 접근한 값과 해당 인덱스를 출력합니다.
  6. 인덱스 기반 접근을 사용하여 벡터의 첫 번째 요소와 마지막 요소를 출력합니다.

다음과 같은 정확한 출력 형식을 사용하세요:

Element at index [index1]: [value1]
Element at index [index2]: [value2]
First element: [first value]
Last element: [last value]

마지막 요소에 접근할 때는 대괄호 연산자와 함께 data.size() - 1을 인덱스로 사용하세요.

치트 시트

C++ 벡터는 개별 요소에 접근하는 두 가지 주요 방법을 제공합니다:

대괄호 연산자 []:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // 10을 가져옵니다
int third = numbers[2];    // 30을 가져옵니다

.at() 메서드:

int first = numbers.at(0);    // 10을 가져옵니다
int third = numbers.at(2);    // 30을 가져옵니다

주요 차이점은 안전성입니다. []는 유효하지 않은 인덱스에 접근할 경우 예측할 수 없는 동작을 유발할 수 있는 반면, .at()은 범위 확인 보호를 위해 예외를 발생시킵니다.

마지막 요소에 접근하려면 인덱스로 data.size() - 1을 사용하세요.

직접 해보기

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 입력 읽기
    int n;
    cin >> n;
    
    vector<int> data;
    
    // n개의 정수를 읽고 벡터에 추가
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        data.push_back(num);
    }
    
    int index1, index2;
    cin >> index1;
    cin >> index2;
    
    // TODO: 아래에 코드를 작성하세요
    // [] 연산자와 .at() 메서드를 사용하여 요소에 접근
    // 접근한 값을 value1과 value2에 저장
    
    // 결과 출력
    cout << "Element at index " << index1 << ": " << value1 << endl;
    cout << "Element at index " << index2 << ": " << value2 << endl;
    cout << "First element: " << /* 첫 번째 요소에 접근 */ << endl;
    cout << "Last element: " << /* data.size() - 1을 사용하여 마지막 요소에 접근 */ << endl;
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직과 흐름의 모든 레슨