본문 바로가기

Develop/Cpp11

[C++] 가상함수테이블(VTable)과 virtual 개인 공부 후 자료를 남겨놓기 위한 목적이므로, 생략되거나 오류가 있을 수 있음을 알립니다. 오버라이딩 (overriding) 가상함수테이블과 virtual을 알기 위해서 오버라이딩을 한번 짚고 가도록 하자. 코드를 보면 Child는 Parent를 상속받고 있고, 이미 Parent 클래스에서 func() 함수를 선언했음에도 Child 클래스에서 같은 이름의 func() 함수를 또 선언하고 있다. 이처럼 상속 받은 함수를 자식 객체 내에서 새롭게 정의하는 것을 오버라이드라고 한다. ( 이때 return 타입과 함수 인자 구성은 동일해야함 ) 위의 함수도 실행해보면 각자의 func() 함수가 잘 출력되는 것을 볼 수 있다. 문제는 여기서 부터 시작된다. 위에서 Parent 클래스로 선언된 p 포인터 변수에 .. 2023. 2. 28.
[C++] STL cmath, map 개인 공부 후 자료를 남겨놓기 위한 목적이므로, 생략되거나 오류가 있을 수 있음을 알립니다. 최근에 알고리즘을 풀며 사용했던 STL인 cmath와 map에 대해 대표적인 몇가지 메소드를 알아보도록 하자. cmath cmath는 C++ STL에 들어있는 라이브러리중 하나로, 수학 연산에 관련된 메소드들을 많이 가지고 있다. 그 중 자주 사용하게 될 메소드 몇가지를 알아보도록 하자. 가장 기본적으로는 코드의 헤더부분에 를 삽입해주어야 사용이 가능하다. min, max 최대, 최소를 계산해주는 메소드이다. 다음과 같이 사용하며, 인자로 들어가는 x와 y중 최대, 최소값을 반환해준다. ceil, floor 순서대로 올림, 내림에 관한 메소드이다. 반환되는 값은 double형으로 반환하며, 해당 x값을 정수로 올.. 2022. 6. 29.
[C++] sort (정렬) 개인 공부 후 자료를 남겨놓기 위한 목적이므로, 생략되거나 오류가 있을 수 있음을 알립니다. 이번 포스팅에서는 정렬에 대한 근본적인 알고리즘보다, C++에서 정렬을 하는 메소드를 어떻게 사용하고, 해당 메소드에 대한 옵션을 어떻게 설정해야 하는지 적어보려 한다. sort() 우선 sort 메소드를 사용하기 위해서는 코드의 헤더 부분에 algorithm 라이브러리를 추가해주어야 한다. 해당 헤더를 추가했다면, 이제 main과 같은 함수에서 정렬과 관련된 메소드들을 사용할 수 있게 된다. C++에서는 내부적으로 해당 값이 32개 이하일 때는 삽입정렬을 사용하고, 32개 초과일 경우에는 힙정렬과 퀵소트를 사용한다고 한다. (대략 O(nlogn) 정도의 시간복잡도가 걸린다고 함.) 기본 사용법 다음과 같은 in.. 2022. 6. 25.
[C++] STL vector 개인 공부 후 자료를 남겨놓기 위한 목적이므로, 생략되거나 오류가 있을 수 있음을 알립니다. C++의 표준 템플릿 라이브러리 중 하나인 에 대해서 알아보도록 하자. vector란? 배열과 같이 데이터들을 순차적으로 보관하는 컨테이너이다. 간단히 말해, C++에서 일반적인 배열은 크기를 지정해주고 데이터를 담아주어야 하지만, vector의 경우에는 일반적인 배열과 다르게 가변적으로 길이가 조정이 가능하며, 임의의 원소를 빠르게 처리할 수 있다. 어떻게 사용할까? 코드의 헤더부분에 #include 를 입력하여 사용한다. 또한 vector "변수명"; 을 입력하여 해당 vector를 선언할 수 있다. vector의 여러 특징 배열 미리 만들기 vector 또한 일반적인 배열들과 마찬가지로 크기를 미리 지정하여.. 2022. 6. 23.