내일배움캠프-언리얼

[내일배움캠프 - 언리얼] DAY 16 - STL 기초

이시보 2025. 12. 18. 19:59

STL ( Standard Template Library)

C++ 표준 라이브러리의 일부로, 컨테이너, 알고리즘, 반복자 등의 템플릿 기반 구성 요소를 포함한다.

다양한 자료구조와 알고리즘을 직접 구현하지 않고도, 사용할 수 있다

 

컨테이너

데이터를 담는 자료구조

  • 모든 컨테이너는 템플릿으로 구현되어 있어, 다양한 타입의 데이터를 저장할 수 있다.
  • 모든 컨테이너는 메모리 관리를 내부적으로 한다. 따라서 사용 시 메모리 해제를 직접 고려하지 않아도 된다.
  • 대부분 컨테이너는 반복자를 제공한다. 따라서 내부 구현을 몰라도 동일한 방식으로 컨테이너를 순회할 수 있다.

벡터

  • 특정 타입에 종속되지 않는다.
  • 원소 개수에 따라 내부 배열의 크기가 자동으로 조절된다.
  • 임의 접근이 가능하다.
  • 삽입, 삭제는 맨 뒤에 하는게 좋다.
vector<int> vec
vector<int> vec1(3, 3)
vector<int> vec2 = {1, 2, 3}
vector<int> vec3(vec2)
vector<int> vec2D(3, vector<int> (4, 0))
  • push_back() : 벡터 맨 뒤에 원소 추가
  • pop_back() : 벡터 맨 뒤에 원소 제거
  • size() : 벡터의 크기 확인
  • erase() : 벡터의 특정 위치의 원소 제거

  • 키 - 값 쌍은 pair<const key, Value> 형태로 저장된다.
  • 키 값을 기준으로 내부 데이터가 자동으로 정렬된다.
  • 중복된 키 값을 허용하지 않는다.
map<int, string> studentMap;

studentMap[101] = "Alice";
studentMap[102] = "Bob";
studentMap[103] = "Charlie";
  • insert() : make_pair()로 페어를 만들어 삽입, {} 나 []로 값 추가도 가능
  • find() : 특정 키가 있는지 확인, 존재하지 않으면 end() 반환
  • size() : 키 값 쌍의 개수 반환
  • erase(key) : 특정 key를 가진 요소 삭제
  • clear() : 모든 원소를 삭제

알고리즘

sort()

내부 데이터 정렬 함수

bool compare(int a, int b) {
    return a > b; // 내림차순
}

// 오름차순
sort(arr, arr + size);
// 내림차순
sort(arr, arr + size, compare);

find()

컨테이너 내부의 특정 원소를 찾아 해당 원소의 반복자를 반환하는 함수

find(first, last, 찾을 값)

반복자

반복자는 컨테이너의 요소에 일관된 접근 방법을 제공하므로, 알고리즘이 특정 컨테이너의 내부 구현과 무관하게 동작할 수 있다.

 

순방향 반복자 : begin() 과 end()로 앞에서부터 순차적으로 순회하는 반복자

 

역방향 반복자 : rbegin()과 rend()로 뒤에서부터 앞으로 역순으로 순회하는 반복자