[C++, STL] 우선순위 큐(priority queue) 비교연산자 구현

사용자 정의 우선순위 큐 [C++, STL] 알고리즘 문제풀이를 위한 우선순위 큐(priority queue) 우선순위 큐는 비교연산자를 통해 자료의 우선순위를 정할 수 있다. 그리고 STL에는 자료를 오름차순, 내림차순으로 정렬해주는 greater, less가 미리 구현되어 있어서 편리하게 이용할 수 있다. 그러나 greater, less가 만족스럽지 않다면 사용자가 직접 비교연산자를 구현할 수 있다. 우선순위 큐 선언 우선순위 큐를 사용하기 위해서 queue … Read more

[C, C++] INT, SHORT 등 정수의 최대값, 최소값 출력(limits.h)

최대값, 최소값 확인의 필요성 우리 가족이 대대손손 월급을 받을때마다 급여를 int형 변수인 account에 넣어준다고 하자. 그럼 이 account는 언젠가 2147483647(=INT의 최대값)을 초과할 것이고, 오버플로우가 발생한다. 이를 막으려면 오버플로우가 발생시 account2를 만드는 등의 다른 방법을 취해야한다. 그러기 위해서는 일단 오버플로우의 조건인 INT의 최대값을 알아야한다. 최대값, 최소값 확인 limits.h 파일에는 char, int, short등의 최대값과 최소값이 정의되어있다. printf를 … Read more

[C++] typeid로 정수, 클래스, STL 등 변수의 자료형 확인

목적 C++에서 typeid를 이용하여 정수 등 변수의 자료형을 출력한다. typeid C++에는 typeinfo 헤더파일에 typeid가 있다. typeid와 연산자로 두 개체의 자료형이 같은지 확인할 수 있고 멤버함수 name()을 통해 단일 개체의 자료형을 확인할 수 있다. typeid를 이용하여 두 개체의 자료형 일치 확인 구현 typeid가 포함된 typeinfo, 출력을 위한 iostream를 포함시킨다. 자료형 일치를 확인하고 싶은 개체들을 선언한다. typeid와 … Read more

[C++, STL] 2차원 벡터(vector)의 range-based for loop 사용

다른 글 [C++, STL] 2차원 벡터 만들기 목적 2차원 벡터의 모든 원소를 Range-based for loop를 이용하여 출력 Range-based for loop는 C++11부터 지원한다. 구현 테스트를 위한 벡터 생성 위와 같이 코드를 작성하면 아래와 같은 5X5 벡터를 만들 수 있다. 0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 30 31 … Read more

[C++, STL] set 원소 iterator 없이 출력(range-based for loop)

*Range-Based for Loop 가 필요해서 C++11 이상에서 동작합니다. iterator 선언 set원소 출력 방법 iterator 미선언 set원소 출력 방법 범위기반 for문에선 iterator를 선언하지 않아도 참조가 가능한데, 이유는 모르겠습니다. 공부가 더 필요합니다.컴파일러는 msvc, gcc에서 동작하는것을 확인했습니다. 그리고 iterator, range based for loop, 벡터의 수행시간을 각각 확인해봤는데 약 백만개를 참조했을때 아래의 결과가 나왔습니다. range based for loop의 벡터 … Read more

[C++, STL] 구조체, pair 벡터 정렬

다른 글 [C++, STL] 알고리즘 문제풀이를 위한 벡터(vector) [C++, STL] 알고리즘 문제풀이를 위한 pair 서론 벡터에 들어갈 수 있는 자료형에 pair와 struct(구조체)가 있다. 이들을 이용하여 하나의 원소에 다수의 자료가 들어갈 수 있다. pair와 struct를 자료형으로 가지는 벡터에서 사용자 지정 함수를 이용하면 특정 자료를 기준으로 정렬할 수 있다. pair 벡터 정렬 정수를 자료형으로 갖는 pair의 first를 … Read more

[C, C++] memset을 이용한 정수배열 초기화

서론 memset은 배열을 초기화할때 유용하게 사용할 수 있다. 반복문을 사용하는것보다 간편하고 시간복잡도에서 약간의 우위를 가진다. 본론 정수 배열을 0, -1로 초기화 C에서는 string.h, C++에서는 cstring을 불러오고 0으로 배열 초기화를 원하는 곳에서 아래와 같이 쓴다. -1로 초기화를 원하면, 0대신 -1을 쓴다. 위 코드와 같이 여러차원의 배열도 초기화 할 수 있다. 그러나 memset은 바이트 단위로 초기화 하므로 … Read more

[C++, STL] 큐에서 구조체 사용

다른 글 [C++, STL] 알고리즘 문제풀이를 위한 큐(queue) 코드 C++의 queue STL을 이용하여 x, y, z 좌표값을 가지는 구조체를 자료형으로 사용하는 큐를 생성 구조체 정의 큐 정의 좌표 큐에 삽입 좌표 큐에서 제거 큐의 최상단 좌표 확인