내배캠 TIL

[내배캠 TIL 251218] C++ STL 기초 1

xodn246 2025. 12. 18. 20:58

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뿐만 아니라 대부분의 컨테이너에 존재함)