🚀 C++ 벡터(Vector) 완벽 정리
2025. 2. 24. 15:46ㆍ프론트엔드/Next JS
728x90
🚀 C++ 벡터(Vector) 완벽 정리
📌 벡터(Vector)란?
C++의 vector는 동적 배열(Dynamic Array)로, 크기가 자동으로 조정되는 배열을 제공합니다.
std::vector는 **STL(Standard Template Library, 표준 템플릿 라이브러리)**에 포함되어 있으며, 배열보다 더 강력하고 유연한 기능을 제공합니다.
1️⃣ 벡터 선언 및 기본 사용법
🔹 벡터 선언
#include <iostream>
#include <vector> // 벡터를 사용하려면 반드시 포함
using namespace std;
int main() {
vector<int> A; // 정수형 벡터 선언
vector<double> B; // 실수형 벡터 선언
vector<string> C; // 문자열 벡터 선언
return 0;
}
- vector<int> A; → 정수형 벡터 A 선언
- vector<double> B; → 실수형 벡터 B 선언
- vector<string> C; → 문자열 벡터 C 선언
2️⃣ 벡터 초기화 및 크기 지정
🔹 벡터 초기화 방법
vector<int> A(5); // 크기가 5인 벡터 (0으로 초기화)
vector<int> B(5, 10); // 크기가 5이고 모든 요소가 10으로 초기화
vector<int> C = {1, 2, 3, 4, 5}; // 리스트 초기화
vector<int> D{1, 2, 3, 4, 5}; // 리스트 초기화 (C++11 이후)
- vector<int> A(5); → 크기가 5이며 모든 요소가 0으로 초기화됨.
- vector<int> B(5, 10); → 크기가 5이며 모든 요소가 10으로 초기화됨.
- vector<int> C = {1, 2, 3, 4, 5}; → 특정 값으로 초기화 가능.
3️⃣ 벡터 주요 함수
🔹 요소 추가 (push_back)
vector<int> A;
A.push_back(10); // A = {10}
A.push_back(20); // A = {10, 20}
A.push_back(30); // A = {10, 20, 30}
- push_back(value) → 벡터의 마지막에 값 추가.
🔹 요소 삭제 (pop_back)
A.pop_back(); // 마지막 요소(30) 제거, A = {10, 20}
- pop_back() → 벡터의 마지막 요소 제거.
4️⃣ 벡터 요소 접근 방법
🔹 배열처럼 [] 연산자 사용
cout << A[0] << endl; // 첫 번째 요소 출력
- A[0] → 배열처럼 접근 가능.
🔹 .at(index) 함수 사용
cout << A.at(1) << endl;
- A.at(index) → 예외 처리가 포함된 안전한 접근 방법.
- A[1]과 동일하지만, 범위를 벗어나면 예외 발생 (out_of_range 오류).
5️⃣ 벡터 크기 관련 함수
cout << A.size() << endl; // 현재 벡터 크기
cout << A.capacity() << endl; // 현재 할당된 메모리 크기
cout << A.empty() << endl; // 비어있는지 확인 (true/false)
- .size() → 현재 벡터의 요소 개수 반환.
- .capacity() → 메모리가 얼마나 할당되었는지 확인.
- .empty() → 벡터가 비어 있는지 확인 (true or false).
6️⃣ 벡터 삽입 및 삭제
🔹 특정 위치에 요소 삽입 (insert)
vector<int> A = {1, 2, 3, 4, 5};
A.insert(A.begin() + 2, 99); // 2번 인덱스에 99 삽입
// A = {1, 2, 99, 3, 4, 5}
- A.insert(A.begin() + index, value) → 특정 위치에 요소 추가.
🔹 특정 위치의 요소 삭제 (erase)
A.erase(A.begin() + 1); // 인덱스 1 요소 제거
// A = {1, 99, 3, 4, 5}
- A.erase(A.begin() + index) → 특정 위치 요소 삭제.
7️⃣ 벡터 정렬
🔹 sort() 함수 사용
#include <algorithm> // sort()를 사용하기 위해 필요
vector<int> A = {3, 1, 4, 1, 5, 9};
sort(A.begin(), A.end()); // 오름차순 정렬
// A = {1, 1, 3, 4, 5, 9}
- sort(A.begin(), A.end()); → 벡터를 오름차순 정렬.
- sort(A.rbegin(), A.rend()); → 내림차순 정렬.
8️⃣ 벡터 전체 삭제 (clear)
A.clear(); // 모든 요소 삭제
cout << A.size(); // 0 출력
- .clear() → 모든 요소 삭제, 크기 0으로 설정.
📌 코드 분석 (제공된 코드)
🔹 제공된 코드에서 중요한 벡터 함수들
A[4] = -5; // 5번째 요소를 -5로 설정
A.pop_back(); // 마지막 요소 제거
A.erase(A.begin() + 3); // 3번째 요소 제거
cout << A.size() << endl; // 벡터 크기 출력
cout << A.front() << endl; // 첫 번째 요소 출력
cout << A.back() << endl; // 마지막 요소 출력
cout << A[3] << endl; // 4번째 요소 출력
cout << A.at(5) << endl; // 6번째 요소 출력 (예외 발생 가능)
A.clear(); // 모든 요소 삭제
🔵 코드 분석
- A.pop_back();
- 마지막 요소를 제거.
- A.erase(A.begin() + 3);
- 3번째 요소를 삭제.
- cout << A.size();
- 현재 벡터의 크기를 출력.
- cout << A.front();
- 첫 번째 요소를 출력.
- cout << A.at(5);
- 예외가 발생할 가능성이 있음! (std::out_of_range 오류).
🎯 정리
✅ vector는 배열보다 동적 크기 조정이 가능하고, 메모리 관리가 자동으로 이루어짐.
✅ push_back(), pop_back(), insert(), erase() 등을 사용하여 손쉽게 요소 추가/삭제 가능.
✅ at(index)를 사용하면 안전한 접근 가능 (예외 발생 가능).
✅ sort() 함수를 이용하여 오름차순, 내림차순 정렬 가능.
✅ clear()를 사용하면 모든 요소 삭제.
🎯 벡터를 사용하면 좋은 상황
✔ 배열처럼 크기가 고정되지 않고 가변적인 데이터 구조가 필요할 때
✔ 배열보다 유연하게 데이터 삽입/삭제가 필요한 경우
✔ STL의 강력한 기능(sort, find, reverse)을 활용하고 싶을 때
🎯 추가 학습 자료
🚀 이제 C++ 벡터를 마스터하고, 더욱 효율적인 코드를 작성하세요! 💪🎯
728x90
'프론트엔드 > Next JS' 카테고리의 다른 글
| 📌 React Calendar 설정 및 커스텀 정리 (4) | 2025.02.24 |
|---|---|
| 🔍 투 포인터(Two-Pointer) 알고리즘 정리 및 팁 (1) | 2025.02.24 |
| 🚀 Next.js 사전 렌더링(Pre-Rendering) 완벽 정리 (2) | 2025.02.24 |
| 📖 Next.js 도서 추천 페이지 상세 설명 (2) | 2025.02.24 |
| Next.js에서 getLayout을 활용한 글로벌 및 개별 페이지 레이아웃 적용 (1) | 2025.02.24 |