목록Language (73)
Coding Memo
C++에는 값을 다음과 같이 분류할 수 있다. 정의 특징 gvalue generalized lvalue; 변수, 객체, 객체 멤버에 대한 모든 lvalue 표현식; lvalue와 xvalue가 여기에 모두 포함 prvalue pure rvalue; 일반적인 값으로 객체일 때 소멸자를 호출하지 않아도 되는 값; 어떤 연산자의 피연산자 값을 계산하거나 어떤 객체나 비트 필드를 초기화 할 때 계산되는 값 xvalue rvalue로 캐스팅 된 lvalue; 리소스를 재사용할 수 있는 개체나 비트 필드; 내부가 expiring 상태로 비어있음 (껍데기만 남아있음) - 내부 데이터가 만료되어 있는 상태일 수 있음 - 왼값을 move로 내부 데이터가 이동하면 xvalue가 됨 (캐스팅) lvalue 실체를 가지고 있..
로깅 라이브러리를 찾아보다가 한번 설치해보았다. 로깅을 위한 라이브러리로 C++14이상에서 작동한다. Google에서 만든 라이브러리로, 규모가 큰 프로젝트에 적합하다. 다른 라이브러리와 마찬가지로 로깅 레벨(INFO, WARNING, ERROR, FATAL)을 설정가능하다. 또한 조건부 로깅이 가능하다. (특정 조건에 의해서만 로깅을 할 수 있다. 매크로로 처리된다.) FATAL 로깅시에 해당을 로깅한 후에, 프로그램을 정지시키는 기능도 포함한다. 특징은 대용량 로그 처리가 가능하다는 것이라고 나와있다. 로그 파일을 자동을 분할하고 압축하는 기능을 제공하고 있다. 다만, 그만큼 조금 무거운 라이브러리이다. 설치 방법은 공식 문서에도 나와 있다. 사용해 볼 기회가 언젠가 있지 않을...까? 1. Gith..
메타 함수(Meta Function)은 컴파일 타임에 실행되는 함수가 아니라, 컴파일러에서 사용되거나 템플릿 메타 프로그래밍에서 사용하는 함수나 클래스 템플릿을 가리키는 용어이다. 즉, 런타임에서가 아니라, 컴파일 타임에 그 값이 미리 계산이 되어서 알 수 있다. C++ 의 메타프로그래밍에는 반복문 구조가 없어 재귀적으로 템플릿을 구현해야한다는 것을 기억하자. 솔직히 처음부터 복잡한 코드를 보면 이게 코드가 맞나 싶을 정도로 어지러운 코드도 많은 것 같다. 간단한 예시부터 이해해보자. 피보나치 수열의 n번째 수 구하기 피보나치 수열은 다음과 같다. 1, 1, 2, 3, 5, 8, ... 그리고 그 공식은 arr[i] = arr[i-1] + arr[i-2] 이다. 위 수열에서 n번째 값은 구하기 위해서 여..
STL에서 반복자를 통해 각 원소(element)에 접근 할 수 있다. 이는 반복문에서 사용하기 편하다. 포인터 타입으로 생각하면 간단하다. STL의 모든 자료 구조는 내부 원소 순회를 위한 반복자를 제공한다. 각 템플릿마다 iterator 타입은 각각 따로 존재한다. vector::iterator vectorIntIt; vector::iterator vectorFloatIt; list::iterator listStringIt; unordered_map::iterator uMapIt; set::iterator longSetIt; 순회 방식에 따라 3가지로 나뉜다. 사용 가능 연산자 순방향 ++로 다음 반복자 이동 *, ++, ==, != 양방향 ++로 다음 반복자 이동 및 --로 이전 반복자 이동 *, ..
C#에서 Protobuf를 사용할 때는 간단하게 nuget 패키지에 있는 Google.Protobuf만 설치하면 되지만, C++은 직접 헤더 및 라이브러리들을 추가해주어야 한다. 만약 선택한 protobuf 프로젝트의 cmake 폴더 내에 CMakeLists.txt 파일이 있다면 아래 방법을 이용하는 방법도 있다. (보통 구버전에 해당한다.) https://minttea25.tistory.com/127 Protobuf 프로젝트에 추가하기 (Windows, CMake) C#에서 Protobuf를 사용할 때는 간단하게 nuget 패키지에 있는 Google.Protobuf만 설치하면 되지만, C++은 직접 헤더 및 라이브러리들을 추가해주어야 한다. (C#이 굉장히 편했던 것이었다!!!!!!!!!!!!!!!!!..
C#에서 Protobuf를 사용할 때는 간단하게 nuget 패키지에 있는 Google.Protobuf만 설치하면 되지만, C++은 직접 헤더 및 라이브러리들을 추가해주어야 한다. (C#이 굉장히 편했던 것이었다!!!!!!!!!!!!!!!!!!!) 먼저 짚고 넘어가야 할 것은 프로토버퍼 특정 버전 이후에 릴리즈 된 프로젝트는 단순히 cmake로 솔루션을 생성하고 빌드하려고 하면 에러가 날 것이다. 이 경우 다음글을 참고하자. ( https://minttea25.tistory.com/128 ) (그 이전 버전은 cmake 폴더에 있는 CMakeLists.txt파일을 포함하고 있어서 하는 방법이 다소 간단하다.) (일단 확인해 본 것은 3.19까지는 가능한 것 같다.) 추가적으로 proto파일에 대한 outp..
이 글은 `알고리즘 문제해결전략 - 구종만 (인사이트)의 내용을 일부 참고하여 작성하였습니다. 에라토스테네스의 체를 이용한 소수 찾기 기법은 2 부터 시작해 해당 값이 소수이면, 그 값의 배수를 숫자가 있는 풀(pool)에서 지워나가는 방법을 이용해 풀에 소수만 남기는 기법이다. 어떤 소수인 n에 대해서 n * i (i > 0)에 해당하는 값을 걸러내는 체를 이용한다. 위 방법에서 체에 대한 배열의 크기는 확인하려는 값의 최댓값이 될 것이다. 만약 1억까지의 수를 확인하려고 하면 boolean 타입의 배열을 써도 1억 바이트나 사용해야 한다는 것이다. 사실 0과 1만을 표현하는데 있어서 가장 좋은 데이터는 비트이다. 하지만 보통 프로그램 언어에서는 true/false를 표현하는데 사용되는 boolean ..
.NET Framework 1.0 ~ 4.8 .NET Core 1.0 ~ 3.1 .NET 5 이후 C# Version 1.0 ~ 7.3 7.0 ~ 8.0 9.0 ~ 문서에 나와있는 테이블 참고: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version C# language versioning - C# Guide Learn about how the C# language version is determined based on your project and the reasons behind that choice. Learn how to override the default manually. learn..