info8995 님의 블로그

11일차(컨테이너 벡터) 본문

TIL(Today I Learned)/C++

11일차(컨테이너 벡터)

info8995 2024. 12. 31. 20:30

컨테이너(Container)

  • 컨테이너란 데이터를 담는 자료구조입니다.
  • 템플릿으로 구현되어 다양한 데이터 타입에 관계없이 사용할 수 있습니다.
  • 메모리 관리를 따로 고려하지 않아도 됩니다.
  • 모든 컨테이너는 **반복자(Iterator)**를 제공합니다.
    • 반복자를 통해 컨테이너 내부의 세부적인 구현사항을 몰라도 동일한 문법으로 접근할 수 있습니다.

벡터(Vector)

  • 배열과 매우 유사한 동적 컨테이너입니다.
  • 템플릿 클래스라 특정 데이터 타입에 종속되지 않습니다.
  • 삽입되는 원소 개수에 따라 내부 배열의 크기가 자동으로 조정됩니다.
  • **임의 접근(Random Access)**이 가능합니다.
  • 삽입/삭제는 맨 뒤에서 하는 것이 효율적입니다. (배열 구조의 특성상 중간에서 삽입/삭제 시 많은 비용 발생)

주요 메서드

  1. push_back
    • 벡터의 맨 끝에 원소를 추가합니다.
  2. pop_back
    • 벡터의 맨 끝에 있는 원소를 제거합니다.
  3. size
    • 현재 벡터의 크기를 반환합니다.
  4. erase
    • 특정 위치의 원소를 제거합니다. (반복자를 사용해 위치 지정)

맵(Map)

  • 키(Key)와 값(Value) 쌍으로 데이터를 저장하는 연관 컨테이너입니다.
  • 두 가지 데이터 타입(키와 값)을 선언해야 합니다.
  • 키 값을 기준으로 자동 정렬됩니다.
  • 중복된 키 값을 허용하지 않습니다.

주요 특징

  1. 자동 정렬
    • 키 값에 따라 데이터가 오름차순으로 정렬됩니다.
  2. 삽입 방법
    • insert와 make_pair를 사용하여 키-값 쌍을 추가합니다.
  3. 검색
    • find 메서드를 통해 특정 키 값의 존재 여부를 확인할 수 있습니다.
  4. 전체 삭제
    • clear 메서드를 사용하여 맵에 있는 모든 원소를 삭제합니다.

STL 알고리즘

STL은 다양한 알고리즘을 통해 컨테이너에서 자주 사용하는 작업들을 제공합니다.

  • 정렬: sort를 사용해 컨테이너 원소를 오름차순으로 정렬합니다.
  • 검색: find를 사용해 특정 원소를 검색합니다.
  • **반복자(Iterator)**를 활용하여 내부 구현을 알 필요 없이 동일한 문법으로 작업할 수 있습니다.

추가 참고 사항

  • STL은 반복자, 알고리즘, 컨테이너의 조합으로 매우 강력하며 유연하게 데이터 구조와 작업을 처리할 수 있습니다.
  • 벡터는 데이터의 동적 크기 관리와 빠른 임의 접근이 필요한 경우 적합합니다.
  • 맵은 키-값 기반의 데이터 관리 및 정렬이 필요할 때 유용합니다.