당신의 코딩 속도를 향상 시킬 C++ 잡기술 모음이다. 좀 실용적인 것만. 생각나는 대로 추가할 예정
문법은 모두 gcc c++20 기준이다.
입출력 시간 단축 코드 짧게 쓰기
cin.tie(0)->sync_with_stdio(0);
보통 쓰는 코드 보다 조금 짧게 짤 수 있다
값이 -1이 아닌지 체크
if(~a)
~연산은 모든 비트를 반전시킴 -1은 모든 비트가 1이기 때문에 ~연산을 하면 0이 된다.
즉 ~a은 a가 -1일 때는 false 아닐 때는 true가 된다.
if(a!=-1)
이거랑 똑같이 쓸 수 있고 짧아서 좋다.
if(!~a)
반대는 이렇게
배열 크기를 변수로 설정하기(가변길이 배열)
int size;cin >> size;
int arr[size];
보통 안 된다고 알고 있지만 gcc에선 된다.
쉼표로 한 줄 코딩
for(int i=0;i<n;i++)
a++,b+=i;
for문이나 if에서 연산 여러 개 할 때 중괄호를 열지 않고 쉼표를 써서 한 줄에 쓸 수 있다.
for문 안에서 쓸 변수 초기식에서 선언하기
int sum = 0;
for(int i=0,a;i<n;i++)
cin>>a,sum+=a;
sum 구하는 예제로 보면 이런 식으로 쓸 수 있다. 그래프 간선 같은 거 입력받을 때 쓰면 정말 좋다.
for(int i=0,u,v;i<m;i++)
cin>>u>>v,adj[u].push_back(v),adj[v].push_back(u);
공백 없이 입력되는 데이터 입력받기
947586312
이런 데이터 나눠서 입력 받고 싶을 때 char로 입력 받으면 된다. char는 별도의 처리를 안 해줘도 한 글자씩 받아진다.
char ch;
for(int i=0;i<n;i++)
cin>>ch,arr[i]=ch-'0';
이런 식으로 일단 char로 입력 받고 원하는 대로 변환하면 된다.
내림차순 정렬
sort(vec.rbegin(),vec.rend());
이런식으로 내림차순 정렬을 짧게 쓸 수 있다.