Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 벡터의 마지막 요소 접근 및 수정 방법

이 글에서는 C++에서 벡터(vector)의 마지막 요소에 접근하고 값을 수정하는 다양한 방법을 알아보겠습니다.

벡터 템플릿이란?

벡터는 크기가 동적으로 변경되는 시퀀스 컨테이너(sequence container)입니다. 컨테이너란 동일한 타입의 데이터를 담는 객체를 의미하며, 시퀀스 컨테이너는 요소들을 엄격하게 선형 순서로 저장합니다.

벡터 컨테이너는 요소들을 연속된 메모리 공간에 저장하며, 첨자 연산자([])를 사용해 어떤 요소든 직접 접근할 수 있습니다. 배열과 달리 벡터의 크기는 동적이며, 메모리 저장 공간은 자동으로 관리됩니다.

벡터의 정의

template <class T, class Alloc = allocator<T>> class vector;

벡터의 매개변수

벡터 템플릿은 다음과 같은 매개변수를 받습니다.

  • T − 벡터에 저장될 요소의 타입입니다.

  • Alloc − 할당자(allocator) 객체의 타입입니다.

벡터의 마지막 요소에 접근하는 방법

벡터의 마지막 요소에 접근하는 방법은 크게 두 가지가 있습니다.

방법 1: back() 함수 사용

back() 함수는 벡터의 마지막 요소에 대한 참조를 반환하며, 이를 통해 값을 읽거나 수정할 수 있습니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
    vector<int> vec = {11, 22, 33, 44, 55};
    cout<<"수정 전 벡터의 요소: ";
    for(auto i = vec.begin(); i!= vec.end(); ++i){
        cout << *i << " ";
    }
    // back()을 호출하여 마지막 요소 가져오기
    cout<<"\n벡터의 마지막 요소: "<<vec.back();
    vec.back() = 66;
    cout<<"\n수정 후 벡터의 요소: ";
    for(auto i = vec.begin(); i!= vec.end(); ++i){
        cout << *i << " ";
    }
    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

수정 전 벡터의 요소: 11 22 33 44 55
벡터의 마지막 요소: 55
수정 후 벡터의 요소: 11 22 33 44 66

방법 2: size() 함수 사용

size() 함수로 벡터의 전체 크기를 구한 뒤, 인덱스 size() - 1을 사용해 마지막 요소에 접근할 수 있습니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
    vector<int> vec = {11, 22, 33, 44, 55};
    cout<<"수정 전 벡터의 요소: ";
    for(auto i = vec.begin(); i!= vec.end(); ++i){
        cout << *i << " ";
    }
    // size()를 호출하여 마지막 요소 가져오기
    int last = vec.size();
    cout<<"\n벡터의 마지막 요소: "<<vec[last-1];
    vec[last-1] = 66;
    cout<<"\n수정 후 벡터의 요소: ";
    for(auto i = vec.begin(); i!= vec.end(); ++i){
        cout << *i <<" ";
    }
    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

수정 전 벡터의 요소: 11 22 33 44 55
벡터의 마지막 요소: 55
수정 후 벡터의 요소: 11 22 33 44 66

마무리

C++에서 벡터의 마지막 요소에 접근하고 수정하는 방법은 back() 함수와 size() 함수 두 가지가 있습니다. 일반적으로 back() 함수가 더 간결하고 직관적이며, 빈 벡터에 대해 호출하지 않도록 주의하기만 하면 안전하게 사용할 수 있습니다. 반면 size() 기반 방식은 인덱스 계산이 필요하지만 특정 위치의 요소와 함께 활용하기에 유용합니다. 상황에 맞는 방법을 선택해 코드의 가독성과 효율성을 높여 보세요.