TIL - Today I Learned : STL, vector
STL(Standard Template Library) - 표준 템플릿 라이브러리라 하여 똑똑하신 분들이 알고리즘(검색, 정렬 알고리즘 등), 컨테이너(큐, 스택 같은 자료구조), 함수자(함수 호출 연산자를 오버로드하는 클래스를 포함, 함수를 변형하고 확장하는 역할), 반복자(컨테이너의 위치를 가르키는 포인터 같은 것)를 표준화 하여 모아둔 라이브러리이다.
벡터를 사용하기 위해선 벡터 헤더 파일을 선언한다.
#include <vector>
using namespace std;
Vector 란?
vector는 STL에 속해있는 시퀀스 컨테이너에 대한 클래스 템플릿이라 한다.
선형 자료구조이며 배열과 스택을 합친 느낌이다. 배열과 다르게 벡터의 크기는 변화가 가능하다.
벡터 선언
vector<int> v0; // int 타입의 빈 벡터 생성 { }
vector<int> v1(3); // int 타입의 벡터 생성 후 3개의 원소를 0으로 초기화해둠 {0,0,0}
vector<int> v2(3, 1); // int 타입의 벡터 생성 후 3개의 원소를 1으로 초기화해둠 {1,1,1}
vector<int> v3(v2); // v2의 벡터를 복사하여 생성 {1,1,1}
벡터를 사용하면서 알게 되었는데 아래 코드와 같이
[ ] 을 사용하여 값을 할당하려는데 안되는 것이다!
vector<int> myVector;
myVector[0] = 99;
벡터는 동적으로 크키가 조절되는 배열이며, element가 없는 벡터에 직접 접근하려고하면 정의되지 않았기 때문에 접근 할 수 없다고 한다.
이건 된다.
push_back 메소드는 초기 사이즈에 상관없이 element를 추가 할 수 있다.
vector<int> myVector;
myVector.push_back(9);
벡터의 함수
속성 | 설명 |
assign | 벡터를 지우고 지정된 요소를 빈 벡터에 복사합니다. |
at | 벡터의 지정된 위치에 있는 요소에 대한 참조를 반환합니다. |
back | 벡터의 마지막 요소에 대한 참조를 반환합니다. |
begin | 벡터의 첫 번째 요소에 대한 임의 액세스 반복기를 반환합니다. |
capacity | 스토리지를 더 할당하지 않고 벡터가 포함할 수 있는 요소의 수를 반환합니다. |
cbegin | 벡터의 첫 번째 요소에 대한 임의 액세스 const 반복기를 반환합니다. |
cend | 벡터 끝의 바로 다음을 가리키는 임의 액세스 const 반복기를 반환합니다. |
crbegin | 역방향 벡터의 첫 번째 요소에 대해 const 반복기를 반환합니다. |
crend | 역방향 벡터 끝에 대해 const 반복기를 반환합니다. |
clear | 벡터의 요소를 지웁니다. |
data | 벡터의 첫 번째 요소에 대한 포인터를 반환합니다. |
emplace | 내부에서 생성된 요소를 벡터의 지정된 위치에 삽입합니다. |
emplace_back | 내부에서 생성된 요소를 벡터의 끝에 추가합니다. |
empty | 벡터 컨테이너가 비어 있는지 테스트합니다. |
end | 벡터 끝을 가리키는 임의 액세스 반복기를 반환합니다. |
erase | 벡터의 지정된 위치에서 요소 또는 요소 범위를 제거합니다. |
front | 벡터의 첫 번째 요소에 대한 참조를 반환합니다. |
get_allocator | 벡터에서 사용하는 allocator 클래스에 개체를 반환합니다. |
insert | 지정된 위치에 있는 요소 또는 여러 요소를 벡터에 삽입합니다. |
max_size | 벡터의 최대 길이를 반환합니다. |
pop_back | 벡터의 끝에 있는 요소를 삭제합니다. |
push_back | 벡터 끝에 요소를 추가합니다. |
rbegin | 역방향 벡터의 첫 번째 요소에 대한 반복기를 반환합니다. |
rend | 역방향 벡터 끝에 대해 반복기를 반환합니다. |
reserve | 벡터 개체에 대한 스토리지의 최소 길이를 예약합니다. |
resize | 벡터의 새 크기를 지정합니다. |
shrink_to_fit | 여분의 용량을 삭제합니다. |
size | 벡터에 있는 요소 수를 반환합니다. |
swap | 두 벡터의 요소를 교환합니다. |
연산자
이름 | 설명 |
operator[] | 지정된 위치에서 벡터 요소에 참조를 반환합니다. |
operator= | 벡터의 요소를 다른 벡터의 복사본으로 바꿉니다. |
표준 템플릿 라이브러리 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 표준 템플릿 라이브러리(STL: Standard Template Library)는 C++을 위한 라이브러리로서 C++ 표준 라이브러리의 많은 부분에 영향을 끼쳤다. 이것은 알고리즘, 컨테이너,
ko.wikipedia.org
https://learn.microsoft.com/ko-kr/cpp/standard-library/cpp-standard-library-overview?view=msvc-170
C++ STL(표준 라이브러리 개요)
자세한 정보: C++ STL(표준 라이브러리) 개요
learn.microsoft.com
https://learn.microsoft.com/ko-kr/cpp/standard-library/vector-class?view=msvc-170
vector 클래스
클래스 벡터의 Microsoft C++ 표준 라이브러리 구현에 대한 참조입니다.
learn.microsoft.com
'C++' 카테고리의 다른 글
#include <memory> Smart Pointer (0) | 2024.07.01 |
---|---|
Struct vs Class (1) | 2024.06.20 |
SOLID - OOP 설계의 원칙 (0) | 2024.06.08 |
OOP - Object Oriented Programming 객체 지향 프로그래밍 (0) | 2024.06.03 |
std::sort() & Lamda (0) | 2024.05.14 |