Box heap에 할당된 값에 대한 소유권을 가진다는 뜻 일반적으로 heap 메모리에서 할당된 데이터를 관리하기 위해 사용됨 C++의 'unique_ptr'와 유사하며, 스택에 할당되는 대신 heap 메모리에 할당됨 Rc reference counting을 의미하며, 여러 개의 소유권이 필요한 경우 사용됨 여러 개의 소유권을 가질 수 있으며, 이를 통해 동일한 데이터에 대한 여러 개의 참조를 추적할 수 있음 C++의 'shared_ptr'와 유사하며, 여러 개의 소유권을 추적하여 해당 데이터가 더 이상 필요하지 않을 때 자동으로 제거됨 공통점 메모리 관리에 큰 도움을 줄 뿐만 아니라 코드의 안전성을 높이는 데 도움이 됨 예제 코드 use std::rc::Rc; fn box_value() { // Box로..
2023.01.31 - [개발/C++] - 1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기 1. C++ DLL을 C#에서 사용하는 간단한 예제 C++ DLL(CPP.dll) #include extern "C" __declspec(dllexport) int AddNumbers(int a, int b) { return a + b; } C# using System; using System.Runtime.InteropServices;//import하지 않으면 DLLImport 사용 불가! namespace CSharpApp { class Program { [DllImport("CPP.dll")] public static extern int AddNumbers(int a, int b); static v..
방법 1 : 프로젝트 세팅부터 DLL로 선택해서 빌드하기 Visual Studio 2019에서 새 프로젝트를 생성 "Win32 Console Application" 프로젝트 템플릿을 선택 "Application Settings" 단계에서 "DLL"을 선택 프로젝트 속성에서 "C/C++" > "Code Generation" > "Runtime Library"를 "Multi-threaded DLL (/MD)"로 설정 프로젝트에 필요한 함수를 작성 "Build" > "Build Solution"을 선택하여 프로젝트를 빌드 빌드 결과인 dll 파일은 프로젝트 폴더의 "Debug" 또는 "Release" 폴더에 생성되는 것 확인 방법 2 : 이미 개발한 프로젝트를 DLL로 선택해서 빌드하기 프로젝트 속성 -> 일..
❗이 글은 ChatGPT와의 질답을 통해 작성되었습니다. 개요 C++의 lambda는 익명 함수를 생성하는 방법 중 하나입니다. lambda 표현식은 함수의 헤더와 바디를 한 줄에 작성할 수 있어 간결한 코드를 작성할 수 있습니다. lambda 표현식은 기본 형식이 ->리턴타입 {함수 본문} 입니다. 이때, 인자리스트나 리턴타입은 생략 가능합니다. C++의 lambda 함수의 []는 capture list라고 불리며, 함수 바디 내부에서 참조할 수 있는 외부 변수를 정의합니다. [] : 아무런 변수도 캡처하지 않습니다. [x, &y]: x라는 이름의 변수를 값으로 캡처하고 y라는 이름의 변수를 참조로 캡처합니다. [&] : 외부 모든 변수를 참조로 캡처합니다. [=]: 외부 모든 변수를 값으로 캡처합니다..
❗이 글은 ChatGPT와의 질답을 통해 작성되었습니다. C++ 20은 여러 가지 새로운 기능을 추가하였습니다. 그 중에서는 다음과 같은 기능들이 있습니다: Concepts: 템플릿 인수의 유효성을 컴파일 타임에 검사할 수 있는 기능. Concepts는 템플릿 함수나 템플릿 클래스의 인수들이 원하는 조건(concept)을 만족하는지 컴파일 타임에 검사할 수 있는 기능입니다. 이를 통해서 템플릿 함수나 클래스를 사용할 때 오류를 최대한 빨리 확인 할 수 있게 됩니다. 예를 들어, 아래의 함수 add()는 두 개의 값을 더하는 함수 입니다. template auto add(T a, U b) { return a + b; } 이 함수를 사용할 때 T, U 타입은 어떤 타입이든 가능하지만, 타입 T는 덧셈 연산이..
std::unordered_map map보다 더 빠른 탐색을 위한 자료구조 해쉬테이블로 구현한 자료구조 O(1)의 시간복잡도를 가짐 Map의 경우 O(log n)의 시간복잡도를 가짐 #include 을 선언하면 사용 가능 std::pair으로 구성되며 key가 유사한 데이터가 많으면 성능이 떨어짐 unordered_map 정렬하기 각 Value로 정렬한 후 출력을 진행하는 간단한 로직 #include #include void main() { std::unordered_map _map; _map.insert({"a",1}); _map.insert({"b",4}); _map.insert({"c",3}); _map.insert({"d",2}); //use vector for sorting std::vector..