-
[C++] STL set / map사용법
C++에서 다양한 STL을 제공하는데, 그 중에서 set과 map을 소개한다. 두 자료구조 모두 공통으로 associative container다. Sequential container: array, vector, list Associative container: set, map set set은 특정 기준에 의해 element가 자동으로 정렬되는 자료구조로…
-
[C++] STL priority_queue 사용법
C++에서 다양한 STL을 제공하는데, 그 중에서 priority_queue를 소개하고자 한다. Introduction 기본적으로 queue는 FIFO (First In First Out) 방식의 자료 구조로 들어온 순서로 나가는 순서도 동일한 자료구조다. 내가 만약 5, 3, 1, 2, 4…
-
[C/C++] Non-static Member Function Pointer in Class
C 또는 C++를 사용하다 보면 function pointer를 다루는 경우가 간혹 생긴다. Non-class Function Pointer func1 func2 func3 위 코드는 class 또는 struct를 사용하지 않는 프로그램에서 사용 가능하다. 그러나 class의 member function으로 사용하는 경우는…
-
[C/C++] Parent Class에서 Child Class의 Variable or Function 접근
C++에선 상속의 개념이 존재하는데, parent class의 특성을 상속받아서 사용하는 방식이 제공된다. 이 때 상속을 받은 child class에선 parent class 변수 또는 함수에 접근이 바로 가능한데, 반대로 parent class에서 child class로의 접근을 하기 위해선…
-
[C/C++] 접근 지정자
C++에서 제공하는 접근지정자 (public, protected, private)은 크게 두 가지 종류로 역할이 나뉜다. 우선 각 접근 지정자에 대한 정의는 다음과 같다. public: 조건 없이 어디서든 접근 가능 protected: 상속받을 시 접근 가능 private: 해당…
-
[C/C++] undefined reference to ‘vtable for X’
C++ code를 build하다보면 virtual keyword를 종종 사용하게 되는데, 간혹 다음과 같은 error를 볼 수 있다. 이는 virtual keyword를 사용하고 난 뒤에 상속받은 class에서 해당 function을 구현해주지 않아 발생한 문제다. 아래 예시 코드를 보자.…
-
[C++] Rvalue Reference
Rvalue reference에 대해 말하기 위해선 Rvalue, Lvalue에 대해서 알아야 한다. Rvalue, Lvalue Rvalue, lvalue라는 용어는 general한 용어로 = 기호를 기준으로 말하면 이해하기 쉽다. Lvalue는 어떤 변수에 저장되어 지속되는 값을 의미하며, Rvalue는 이런 지속적인…
-
[C++] Smart Pointer (unique_ptr / shared_ptr / weak_ptr)
기본적으로 C++ language는 garbage collector 기능을 지원하지 않기 때문에 memory dynamic allocation을 하면 deallocation 또한 프로그래머가 고려해줘야 한다. 이런 동작은 프로그램의 memory leak 문제를 발생시킬 수 있기 때문에 프로그램의 안정성을 낮춘다. 이를 위해서…
-
[C++] Vector Erase시 Segmentation Fault
Vector std library를 사용하다가 다음과 같은 코드에서 runtime error가 발생했다. Segmentation fault (core dumped) 원인을 분석하다가 erase() 함수 전에 push_back()을 호출하여 vector에 element를 추가할 경우 문제가 되는 조건을 확인했다. Solution 해결 방안으로 erase()와…
-
[C++] undefined reference to template
C++ programming을 하다보면 build 중 다음과 같은 error를 쉽게 겪을 수 있다. 기본적으로 C++에선 source file에선 template 형태의 함수를 가질 수 없다고 한다. Example 위와 같이 header와 source file을 분리해서 사용하고자 했는데, linking…