유저가 정의한 데이터 타입으로 이름과 정수형 상수가 짝을지어 이루어져 있다. 이러한 자료구조는 여러가지 선택지가 필요할 때 사용하면 좋다.
#include <iostream>
enum Day { //사용자 정의 data type
sunday = 0 ,
monday = 1,
tuesday = 2,
wednesday = 3,
thursday = 4 ,
friday = 5,
saturday = 6
};
int main()
{
Day today = sunday; // enum 객체 선언
switch (today)
{
case sunday:
std::cout << "It is Sunday!\n";
break;
case monday:
std::cout << "It is Monday!\n";
break;
case tuesday:
std::cout << "It is tuesday!\n";
break;
case wednesday:
std::cout << "It is Wednesday!\n";
break;
case thursday:
std::cout << "It is thursday!\n";
break;
case friday:
std::cout << "It is friday!\n";
break;
case saturday:
std::cout << "It is saturday!\n";
break;
}
return 0;
}
위와 같이 스위치 문에 today의 값에 따라서 결과물이 달라지게 만들어주었다. Enum은 숫자와 짝을 지어서 정의한 data type이기 때문에 case를 숫자로 해도 사용 가능하다. 하지만 굳이 가독성이 떨어지게 사용하지는 말자.
enum Flavor
{
vanilla,//0
chocolate,//1
strawberry,//2
mint//3
};
enum Planet
{
mercury = 4880,
venus = 12104,
earth = 12756,
mars = 6794
};
또한 enum은 짝 지을 숫자를 지정 할 수 있고 지정하지 않을 수 있는데 지정하지 않을 시 자동으로 0 부터 짝이 지어진다.
Standard Template Libaray의 약자로 템플릿을 사용한 컨테이너의 집합
널리 사용되는 자료구조와 알고리즘이 구현되어 있음
시간 복잡도는 레퍼런스 문서에서 찾아 볼 수 있음
강력하고 적용 및 재 사용성이 좋다!
궁금하면 공식문서 찾아보자! 모든 내용을 다 알 수 있다.
컨테이너
알고리즘
반복자 (iterators)
Sequential 컨테이너
Associative 컨테이너
컨테이너 어댑터
요소는 복사되어 컨테이너에 저장됨
사용자 정의 자료형 ( 클래스)는 복사가 가능하고, 대입이 가능해야 함
Associative 컨테이너의 경우, 비교 연산을 수행할 수 있어야 함