고정 구문
#포함하다
네임스페이스 표준 사용;
모든 C++ 표준 라이브러리를 포함하는 헤더 파일
네임스페이스 – 변수 이름에 범위를 두어 다양한 라이브러리에서 변수 이름이 중복되지 않도록 합니다.
cin, cout 등이 std::cin처럼 호출되도록 std를 기본값으로 설정합니다.
알고리즘에 사용되는 간단한 구문
typedef
유형의 별칭을 축약할 때 사용할 수 있습니다.
예를 들어 유형의 이름을 int로 지정하려는 경우 i
=> typedef 정수 i
다음과 같이 사용할 수 있습니다. int a = 1;
=> ia = 1;
#정의하다
매크로 및 상수 값을 정의할 수 있습니다.
예를 들어
#define PI = 3.14
#define loop(x,n) for(int x=0; x++; x
사용법은 다음과 같습니다
루프(0,10){}
STL – 표준 템플릿 라이브러리
– 4가지 유형의 알고리즘, 컨테이너, 반복자 및 펑터를 제공합니다.
1) 알고리즘
정렬, 검색 등과 관련된 함수로 구성되어 있습니다. 일반적으로 sort()
2) 컨테이너 – C++에서 제공하는 데이터 구조
2-1) 시퀀스 컨테이너 – 단순히 데이터를 저장하는 데이터 구조. 배열, 벡터, dequeu, 목록 등.
2-2) 연관 컨테이너 – 데이터가 저장됨에 따라 자동 정렬다음과 같은 데이터 구조 – 설정, 지도 등, 중복 키가질 수 있다면 다중붙이다
2-3) 정렬되지 않은 연관 컨테이너 – 데이터가 저장될 때 자동으로 정렬되지 않는 데이터 구조. – 정렬되지 않은붙이다
2-4) 컨테이너 어댑터 – 시퀀스 컨테이너(stack, dequeue)의 데이터 구조로 만든 데이터 구조, 스택, 큐, priority_queue
3) 반복자 – 컨테이너에 저장된 요소의 주소를 가리키는 개체입니다.
컨테이너 구현은 일반화된 반복자를 통해 쉽게 순회할 수 있습니다.
벡터
시작() 및 끝(), 사전(반복자, cnt) – 반복자를 cnt로 증가
&*(begin()) 과 같이 사용하면 주소 값을 알 수 있습니다.
포인터와의 차이점은?
반복자는 컨테이너의 개체를 참조하며 제거할 수 없습니다. 포인터를 제거할 수 있습니다.
4) Functor – 함수 호출 연산자를 오버로드하는 클래스 인스턴스(객체)
Functor는 알고리즘 해결에 직접 사용되지 않지만 구조화 및 최적화에 사용할 수 있습니다.
함수를 호출하는 것처럼 객체를 호출할 수 있습니다.
함수 포인터의 일반화인 클래스 내에 캡슐화된 함수입니다.
장점: 인라이닝이 가능하기 때문에 함수 호출에 대한 부담이 없어 알고리즘 처리가 빠릅니다.
일반 함수와 달리 멤버 변수와 멤버 함수를 가질 수 있습니다.
함수 포인터와 달리 함수 개체는 형식이 명확해야 하므로 형식이 안전합니다.
함수 객체의 모양이 같아도 객체의 타입이 다르면 완전히 다른 타입으로 인식(다형성)한다.
컴파일러 최적화에 유용합니다.