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