[Algorithm] 알고리즘 기본
c++로 알고리즘 공부해서 코테 마스터가 될테야 ***
✅ typedef
타입의 이름을 새롭게 별칭으로 정의하고 타입 대신 별칭을 사용할 수 있는 것 ( 더 짧거나 의미있는 이름을 지을 수 있다 )
사용법 - typedef <타입> <별칭>
#include<bits/stdc++.h>
using namespace std;
typedef int i; //int라는 타입을 i 라는 새로운 별칭으로 바꿔서 표현
int main(){
i a =1;
cout<<a<<"\n";
return 0;
}
✅ define
상수나 매크로를 정의 할 수 있다
#include <bits/stdc++.h>
using namespace std;
#define PI 3.14159
#define loop(x,n) for(int x=0;x<n;x++)
int main(){
cout<<PI<<"\n";
int sum=0;
loop(i,10){
sum+=i;
}
cout<<sum<<"\n";
return 0;
}
PI라는 상수정의, for 반복문을 loop라는 문자열으로 치환
✅ STL
c++이 제공하는 라이브러리로 자료구조 함수 등을 제공한다
알고리즘, 컨테이너, 이터레이터, 펑터 이렇게 4가지를 제공하며 vector 자료구조나 sort() 함수를 쓸 수 있는 건
STL 덕이다!
알고리즘 : 정렬, 탐색 등에 관한 함수로 이루어져 있으며 sort()가 대표적이다.
컨테이너 : c++에서 제공하는 자료구조를 의미
- 시퀀스 컨테이너 : 데이터를 단순히 저장 ex) array, vector, deque, forward_list, list 등
- 연관 컨테이너 : 자료 저장 됨에 따라 자동정렬되는 자료구조, 중복키가 가능한 것은 multi가 붙음
ex) set, map,multiset, multimap
- 정렬되지 않은 연관 컨테이너 : 자동정렬이 되지 않는 자료구조
ex) unordered_set, unordered_map, unordered_multiset, unordered_multimap
- 컨테이너 어댑터 : 시퀀스 컨테이너를 이용해 만든 자료구조 , stack, queue는 deque로 priority_queue는 vector을 이용해 힙 자료구조로 만듬
펑터 : 함수 호출 연산자를 오버로드하는 클래스의 인스턴스
출처 - 큰돌 알고리즘 교안