[Modern C++] 10.4. STL(4)

윤정민·2023년 7월 10일
0

C++

목록 보기
29/46

1. basic_string

std::string은 basic_string이라는 클래스 템플릿의 인스턴스화 버전이다.

  • basic_string
    • CharT 타입의 객체들을 메모리에 연속적으로 저장하고 여러가지 문자열 연산들을 지원해주는 클래스
template <class CharT, class Traits = std::char_traits<CharT>,
          class Allocator = std::allocator<CharT> >
class basic_string;
  • Traints: 주어진 CharT문자들에 대해 기본적인 문자열 연산들을 정의해놓은 클래스
    • 문자열들을 어떻게 보관하는지(basic_string)에 대한 로직과 문자열들을 어떻게 연산하는지(Traits)에 대한 로직을 분리할 수 있게 만듦

2. 짧은 문자열 최적화(SSO)

  • 메모리 할당 작업은 시간을 많이 잡아먹음
  • 짧은 길이 문자열의 경우 따로 문자데이터를 위한 메모리를 할당하는 대신 그냥 객체 자체에 저장해버림

3. 문자열 리터럴 정의하기

  • auto str = "hello"의 경우 const char*로 정의됨
  • auto str = "hello"s처럼 뒤에s를 붙여주면 autostring으로 추론됨
profile
그냥 하자

0개의 댓글