백준과 같은 알고리즘 문제들을 풀면서 검색했던 메소드 사용법들을 한눈에 보기 쉽도록 정리한 페이지이다. (나는 빡대가리니까^_^)
정석적인 설명은 cplusplus.com을 참고하도록 하자. 이 페이지는 ACM-ICPC에서도 유일하게 접속 가능한 웹 페이지이다.
memset (전체 원소를 특정 값으로 초기화)
#include <cstring>
void memset(void *ptr, int value, size_t num);
ptr
: 채우고자 하는 메모리의 시작 포인터(시작 주소)value
: 메모리에 채우고자 하는 값. int
형이지만 내부에서는 unsigned char(1byte)
형태로 변환되어 저장됨num
: 채우고자 하는 바이트의 수. 즉, 채우고자 하는 메모리의 크기// arr 배열의 원소를 0으로 초기화하고 싶을 때
#include <cstring>
int main()
{
int arr[10];
memset(arr, 0, sizeof(arr));
}
위의 메소드를 사용할때 어려움을 겪었던 문제
숫자의 개수2019-10-30
unique (벡터 중복 원소 제거)
#include <algorithm>
vector<type>::iterator unique(v.begin(), v.end());
end()
값을 반환함(쓰레기값의 시작 iterator)erase()
함수도 같이 사용해야 함#include <vector>
#include <algorithm>
vector<int> input;
// input = [1, 1, 2, 2, 2, 3, 4, 5, 5]
// #1. unique 함수만 실행한 경우
unique(input.begin(), input.end());
// input = [1, 2, 3, 4, 5, 1, 2, 2, 5]
// 쓰레기값의 순서는 바뀔 수 있음
// #2. erase와 unique를 둘 다 실행한 경우
erase(unique(input.begin(), input.end()), input.end());
// input = [1, 2, 3, 4, 5]
위의 메소드를 사용할때 어려움을 겪었던 문제
단어 정렬2019-11-03
compair (custom sort 사용 시 비교 함수)
맨날 custom sort가 필요할 때 마다 compare 함수 구현 방법 헷갈려서 구글링한지 어언 3년..(2019-11-03
기준)
구글링하기 귀찮아서 내가 사용한 예시들을 좀 정리해 보려고 한다.
first 기준 오름차순, first가 같을 경우 second 오름차순 정렬
bool compair(pair<int,int> a, pair<int,int> b)
{
if(a.first==b.first)
return a.second < b.second;
else
return a.first < b.first;
}
위의 메소드를 사용할때 어려움을 겪었던 문제
좌표 정렬하기2019-11-03
second 기준 오름차순, second가 같을 경우 first 오름차순 정렬
bool compair(pair<int,int> a, pair<int,int> b)
{
if(a.second == b.second)
return a.first < b.first;
else
return a.second < b.second;
}
위의 메소드를 사용할때 어려움을 겪었던 문제
좌표 정렬하기 22019-11-03
단어의 길이 기준 오름차순, 단어의 길이가 같을 경우 사전 순 정렬
int compare(string a, string b)
{
if(a.length() == b.length())
return a < b;
else
return a.length() < b.length();
}
위의 메소드를 사용할때 어려움을 겪었던 문제
단어 정렬2019-11-03
static_cast<type> (형 변환)
C에서는 출력을 하기 위해서는 출력 형식을 지정해 주기 때문에 해당 형식으로 알아서 출력이 되었는데, C++은 cout
을 사용하기 때문에 그냥 출력하면 형 변환이 되지 않는다.
따라서, static_cast<type>
을 이용하여 형 변환을 해 주어야 한다.
char input = 'A';
int index = input - 'A';
cout << index << "\n"
<< static_cast<char> (index + 'A') << "\n"
// 출력 결과
// 0
// A
위의 메소드를 사용할 때 어려움을 겪은 문제
1991번 : 트리 순회2020-04-07
reverse(begin(), end()) (뒤집기)
string이나 vector 등의 iterator가 있는 자료형을 뒤집을 때 사용한다.
#include <algorithm>
string sample = "ABCD";
reverse(sample.begin(), sample.end());
printf("%s", sample.c_str());
// 출력 결과
// DCBA