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

C++ STL vector::begin()과 vector::end() 함수 완벽 정리


C++ STL에서 vector::begin() 함수는 컨테이너의 첫 번째 요소를 가리키는 반복자(iterator)를 반환하는 양방향 반복자(bidirectional iterator)입니다.

vector::end() 함수 역시 양방향 반복자로, 마지막 요소의 다음 위치(past-the-end)를 가리키는 반복자를 반환합니다. 즉, end()가 반환하는 반복자는 실제 유효한 요소를 가리키지 않으며, 벡터의 끝을 판단하는 기준점으로 사용됩니다.

이 두 함수는 주로 반복문에서 벡터의 모든 요소를 순회하거나, insert() 같은 멤버 함수에 삽입 위치를 지정할 때 함께 활용됩니다.

동작 알고리즘

시작
    벡터 v를 초기화한다.
    벡터 v1과 반복자 it을 선언한다.
    begin()을 이용해 벡터에 요소를 삽입한다.
    begin()과 end()로 전체 요소를 순회하며 출력한다.
종료.

예제 코드

#include<iostream>
#include <bits/stdc++.h>
using namespace std;

int main() {
    // 값이 있는 벡터 v와 빈 벡터 v1 선언
    vector<int> v = { 50,60,70,80,90}, v1;

    // 반복자 선언
    vector<int>::iterator it;

    // begin()으로 시작 위치를 지정하여 값 40을 삽입
    it = v.insert(v.begin(), 40);

    // begin() 위치에 값 30을 1개 삽입
    it = v.insert(v.begin(), 1, 30);

    cout << "첫 번째 벡터의 요소들: ";
    // begin()부터 end()까지 순회하며 v의 모든 값 출력
    for (it = v.begin(); it != v.end(); ++it)
        cout << *it << " " << endl;

    // v의 begin()부터 end()까지의 모든 값을
    // v1의 시작 위치(begin())에 한꺼번에 삽입
    v1.insert(v1.begin(), v.begin(), v.end());

    cout << "두 번째 벡터의 요소들: ";
    // v1의 모든 값 출력
    for (it = v1.begin(); it != v1.end(); ++it)
        cout << *it << " " << endl;

    return 0;
}

코드 설명

v.insert(v.begin(), 40)은 벡터의 맨 앞에 단일 값 40을 삽입하고, v.insert(v.begin(), 1, 30)은 맨 앞에 값 30을 1개 삽입하는 형태입니다. 이처럼 begin()이 반환하는 반복자를 삽입 위치로 넘기면 원하는 지점에 손쉽게 데이터를 추가할 수 있습니다.

또한 v1.insert(v1.begin(), v.begin(), v.end())처럼 begin()과 end()가 반환하는 반복자 쌍을 사용하면 한 벡터의 전체 내용을 다른 벡터에 한 번에 복사할 수 있습니다.

실행 결과

첫 번째 벡터의 요소들:
30
40
50
60
70
80
90
두 번째 벡터의 요소들:
30
40
50
60
70
80
90