본문 바로가기

개발/C++

C++ this C++에서 멤버 함수 안에서 자기 자신의 멤버를 this를 이용해 접근할 수 있음 구조가 어떻게 돼있냐하면.. class Foo { private: int x = 0, y = 0; public: void set(int a, int b) // void set(Foo* const this, int a, int b) { x = a;// this->x = a; y = b;// this->y = b; } static void foo(int a) // void foo(int a) { x = a;// error } }; 멤버 함수 인자에 보이지는 않지만 자기 자신을 가리키는 놈이 있음 static 함수에는 없음 그래서 일부 라이브러리를 사용하다 보면 문제가 있는데 사용자 클래스에서 스레드를 만들어 멤버 함수를 호출하..
C++ 퀵 소트 (빠른 정렬) 구현해보기 퀵 소트 (QuickSort) 시간 복잡도 : O(n log n) 최선 : O(n log n) 최악 : O(n log n) 정렬이 이미 돼있을 때 최악의 시간 복잡도가 나옴 머지 소트와 달리 추가적인 메모리가 필요하지 않음 퀵 소트는 동일한 값이 있을 때 순서가 보장되지 않는 unstable sort임 머지 소트와 같은 O(n log n)의 시간 복잡도지만 실제 시간은 머지 소트보다 빠름 #include "stdafx.h" #include int const ARRAY_COUNT = 8; void PrintArray(int arr[], int start, int end, int pivot, int i, int j) { for (int k = 0; k < ARRAY_COUNT; k++) { std::cout
C++ 머지 소트(병합 정렬) 구현해보기 머지 소트 (MergeSort) 시간 복잡도 : O(n log n) 최선, 최악, 일반의 경우에 모두 동일한 시간 복잡도를 가짐 머지 소트의 경우 정렬하는 동안 동일한 길이의 배열이 하나 더 필요함 머지 소트는 동일한 값이 있을 때 순서가 보장되는 stable sort임 #include "stdafx.h" #include int const ARRAY_COUNT = 8; void PrintArray(int arr[], int start, int end, int pivot, int i, int j) { for (int k = 0; k < ARRAY_COUNT; k++) { std::cout
C++ const 키워드 const가 붙으면 수정이 안 됨 (되게 만드는 경우도 있지만 그럴 거면 const 붙이지 말자) class ConstClass { public: ConstClass() {} ~ConstClass() {} void SetValue(int value) { m_Value = value; //m_ConstValue = 0; } int GetValue() { return m_Value; } const int m_ConstValue = 0; int m_Value; }; class Test { public: Test() {} ~Test() {} void SetValue(ConstClass& cc) const { cc.SetValue(1); } }; int main() { Test test; ConstClass cc..
C++ shared_ptr 사용할 때 주의할 점 shared_ptr로 생성한 변수를 다른 함수의 매개변수로 넘길 때 신경 써야 할 부분이 있음 #include "pch.h" #include #include #include #include void Func(std::shared_ptr shared) { //std::cout
컴파일러 최적화 visual studio에서 Debug모드와 Release모드로 구성할 수 있음 예제 코드 #include "pch.h" #include #include #include int i = 0; int k = 0; void Func1() { while (true) { if (i == 1) { //std::cout
C++ 스마트 포인터 기본적인 포인터 #include int main() { int *rawPtr = new int(10); std::cout
C++ Map, HashMap(unorder_map) 사용할 때 주의할 점 맵이나 해시맵을 사용할 때 그냥 [] 연산자 사용하는 경우가 많은데 이럴 때 주의해야 하는 점이 있음 #include "pch.h" #include #include #include int main() { std::cout