STL?
Standard Template Library의 약자로 C++ 표준 라이브러리의 일부. 컨테이너, 알고리즘, 반복자 등의 템플릿 기반 구성 요소를 포함한다. 여기서 '컨테이너' 란 데이터를 담는 자료구조를 말한다. 모든 컨테이너는 템플릿으로 구현되어 있어 다양한 타입의 데이터를 저장할 수 있다. 모든 컨테이너는 관리를 내부적으로 하기때문에 사용시 메모리 해제를 직접 고려하지 않아도 된다. 대부분의 컨테이너는 반복자를 제공하기때문에 내부구현을 몰라도 동일한 방식으로 컨테이너를 순회할 수 있다.
Vector
배열과 매우 유사한 컨테이너. 템플릿 클래스로 구현되어 특정 타입에 종속되지 않는다. 배열과는 다르게 삽입되는 원소 개수에 따라 내부 배열의 크기가 자동으로 조정되며 임의 접근이 가능하다. 벡터의 삽입과 삭제는 맨 뒤에 하는것이 바람직하다.(중간 삽입/삭제는 배열 복사가 필요하므로 비효율적임)
Vector의 선언과 초기화
// Vector<자료형> 벡터이름
Vector<int> vec;
// vec2의 크기는 5이며 모든값을 10으로 초기화
Vector<int> vec2(5, 10);
// 초기화 리스트를 사용해 선언
Vector<int> vec3 = {1, 2, 3, 4, 5};
// 복사 or 대입으로 선언
Vector<int> vec4(vec3);
// 2차원 벡터로 선언 3행 4열의 벡터의 값을 모두 7로 초기화
Vector<int> vec2D(3, Vector<int>(4, 7));
Vector 관련 매서드
1. push_back : 벡터의 맨 끝에 원소를 추가하는 매서드.
2. pop_back : 벡터의 맨끝 원소를 제거하는 매서드
3. size : 벡터의 크기(원소 개수)를 확인할 때 사용하는 매서드
4. erase : 특정위치(또는 구간)의 원소를 제거하는 매서드. 중간 원소를 삭제할때 많은 원소를 옮겨야 되는 상황이 발생할 수 있기 때문에 자주 사용하지 않는것을 권장.
Map
Key - Value 쌍의 형태로 데이터를 관리하여 데이터 검색을 용이하게 도와주는 컨테이너
Map의 선언및 사용
// 정수 키와 문자열 값을 저장하는 map
map<int, string> studentMap;
// 요소 추가
studentMap[101] = "Alice";
studentMap[102] = "Bob";
studentMap[103] = "Charlie";
Map의 동작및 관련 매서드
map은 기본적으로 key의 오름차순으로 정렬된다.

1. insert() : make_pair() 를 이용해 pair객체를 생성한 후 insert 함수를 사용할 수 있다.{} 나 [] 를 사용해 값을 추가할 수도 있다.
map<int, string> myMap;
// make_pair()를 사용하여 insert()
myMap.insert(make_pair(1, "Apple"));
myMap.insert(make_pair(2, "Banana"));
myMap.insert(make_pair(3, "Cherry"));
// {}를 사용하여 insert()
myMap.insert({4, "Dog"});
myMap.insert({5, "Elephant"});
myMap.insert({6, "Frog"});
// [] 연산자로 값 추가
myMap[7] = "Giraffe";
myMap[8] = "Horse";
myMap[9] = "Iguana";
2. find() : 특정 key가 map에 존재하는지 확인할 때 사용하는 함수. key가 존재하지 않으면 map.end()를 반환
3. size() : 맵의 key - value 쌍의 개수를 반환하는 함수.
4. erase(key) : map의 특정 key를 가진 요소를 삭제하는데 사용하는 함수
5. clear() : map에 있는 모든 원소를 삭제하는 함수. (map뿐만 아니라 대부분의 컨테이너에 존재함)
'내배캠 TIL' 카테고리의 다른 글
| [내배캠 TIL 251222] C++ 객체지향 SOLID 원칙 (0) | 2025.12.22 |
|---|---|
| [내배캠 TIL 251218] C++ STL 기초 2 (0) | 2025.12.19 |
| [내배캠 TIL 251216] C++ 자원 관리 2 (0) | 2025.12.17 |
| [내배캠 TIL 251216] C++ 자원 관리 1 (0) | 2025.12.16 |
| [내배캠 TIL 251211] C++ Class 활용한 예제 2 (0) | 2025.12.15 |