반응형
vector
std::vector
는 C++의 표준 템플릿 라이브러리(STL)에서 제공하는 동적 배열 컨테이너입니다.
1. 특징
- Dynamic Size:
std::vector
는 동적으로 크기를 조절할 수 있는 배열입니다. 요소를 추가하거나 삭제할 수 있습니다. - 연속된 메모리: 내부적으로 연속된 메모리 블록에 요소를 저장하며, C 스타일 배열과 유사한 성능을 제공합니다.
- 자동 메모리 관리: 벡터는 자체적으로 메모리를 관리하며, 더 이상 사용하지 않을 경우 메모리를 자동으로 해제합니다.
- 빠른 접근: 인덱스를 통해 O(1) 시간 복잡도로 요소에 접근할 수 있습니다.
- 유연성: 다양한 데이터 타입을 사용할 수 있으며, 다양한 STL 알고리즘과 통합할 수 있습니다.
선언
#include <vector>
std::vector<int> vec;
// example
std::vector< int > vec = {1,2,3,4,5}; // 크기가 5인 벡터, 초기값 등록
std::vector< int > vec(10); // 크기가 10인 벡터, 원소는 모두 기본값(0)으로 초기화
std::vector< int > vec(10,5); // 크기가 10인 벡터, 원소는 모두 5로 초기화
함수
Iterators
함수 | 설명 |
begin() |
첫번째 원소를 가리키는 iterator를 반환 |
end() |
마지막 원소의 다음을 가리키는 iterator를 반환 |
cbegin() |
첫번째 원소를 가리키는 상수 iterator를 반환 |
cend() |
마지막 원소의 다음을 가리키는 상수 iterator를 반환 |
rbegin() |
역 순차열의 첫 번째 원소를 가리키는 iterator를 반환 |
rend() |
역 순차열의 마지막 원소의 다음을 가리키는 iterator를 반환 |
crbegin() |
역 순차열의 첫 번째 원소를 가리키는 상수 iterator를 반환 |
crend() |
역 순차열의 마지막 원소의 다음을 가리키는 상수 iterator를 반환 |
기타 접근 또는 사용 관련
함수 | 설명 |
front() |
첫번째 원소의 값 |
back() |
마지막 원소의 값 |
at(int N) |
N번째 원소 값 |
[] 연산자 |
인덱스를 통한 값 접근 허용 |
empty() |
비어있다면 true, 아니라면 false 반환 |
size() |
크기 반환 |
capacity() |
벡터가 할당된 메모리의 크기를 반환 (size보다 항상 크거나 같음) |
push_back(T value) |
맨 마지막 원소 추가 |
pop_back() |
맨 마지막 원소 삭제 |
insert(iterator it, T value) |
원하는 위치에 원하는 값 삽입 |
erase(iterator it1, [iterator it2]) |
원하는 위치, 범위의 원소 삭제 |
clear() |
벡터 초기화(길이 = 0) |
resize(n) |
크기를 n으로 변경 (늘어난 위치의 원소들은 기본값으로 초기화) |
reserve(n) |
capacity를 n으로 변경 (기존 크기보다 작으면 무시) |
사용 예시
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 선언
vector<int> arr1 = { 1,2,3,4,5 };
vector<int> arr2(5);
vector<int> arr3(5, 10);
// push_back
arr1.push_back(6);
cout << arr1.back() << endl; // 6
// pop_back
arr1.pop_back();
cout << arr1.back() << endl; // 5
// insert
arr1.insert(arr1.begin(), 0);
cout << arr1.front() << endl; // 0
arr2.insert(arr2.begin() + 1, 2);
cout << arr2.at(1) << endl; // 2
// erase
arr2.erase(arr2.begin() + 1);
for (auto it = arr2.begin(); it != arr2.end(); it++) // 0, 0, 0, 0, 0,
cout << *it << ", ";
cout << endl;
arr1.erase(arr1.begin(), arr1.begin() + 2);
for (auto it = arr1.begin(); it != arr1.end(); it++) // 2, 3, 4, 5,
cout << *it << ", ";
cout << endl;
// clear
arr3.clear();
cout << arr3.size() << endl; // 0
// resize
arr1.resize(10);
for (auto it = arr1.begin(); it != arr1.end(); it++) // 2, 3, 4, 5, 0, 0, 0, 0, 0, 0,
cout << *it << ", ";
cout << endl;
arr1.resize(2);
for (auto it = arr1.begin(); it != arr1.end(); it++) // 2, 3,
cout << *it << ", ";
cout << endl;
}
반응형
'IT > Programming Language' 카테고리의 다른 글
[C++/STL] STL 사용법 : Container - List (0) | 2025.02.23 |
---|---|
[C++/STL] STL 사용법 : Container - Deque (0) | 2025.02.23 |
[C++/STL] STL 사용법 : Container - Array (0) | 2025.02.15 |
[Java] 어노테이션 (Annotation) (0) | 2025.02.09 |
[Java] 데이터 타입, 자료형 (Data Type) (0) | 2025.02.09 |