목록C++ & C# (31)
오보에블로그
참고 : https://learn.microsoft.com/ko-kr/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-170 연습: 자체 동적 연결 라이브러리 만들기 및 사용(C++) C++를 사용하여 Visual Studio에서 Windows DLL(동적 연결 라이브러리)을 만듭니다. learn.microsoft.com
상황 C++ 은 버전별로 추가된 문법이 다르기 때문에 현재 지정된 컴파일러에 맞는 문법을 사용한건지 체크할 필요가 있다. 그것이 아니어도, 추가된 문법에 대해 확인을 하고 싶은 상황 관련 링크 cppreference.com : 관련 문법들이 자세하게 정리되어있다. modern-cpp-features : 버전별로 마크다운으로 정리해주셨다. 버전별로 어떤 문법이 추가되었는지 개괄적으로 볼 수 있다.

멀티 스레드란? 멀티 스레드란, 하나의 프로세스 안의 여러개의 스레드를 병렬적으로 실행시키는 것을 의미한다. 멀티 프로세스와 다르게 프로세스 안의 자원을 공유할 수 있어서, 컨텍스트 스위치 비용이 적다는 장점이 있다. 하지만, 여러 스레드에서 동시 자원을 사용할 때 문제가 발생할 수 있다. 아래의 코드 예시를 확인해보자. #include #include #include #include using namespace std; int counter = 0; void func() { for (int i = 0; i < 100000; i++) counter += 1; } int main() { vector ts; // counter에 1씩 100000번 더하는 스레드 5개 생성 for (int i = 0; i <..
C++ this_thread 현재 스레드에 접근할 수 있는 함수 라이브러리 get_id 현재 스레드의 아이디 반환 /* output : main thread ID : 37832 t1 thread ID : 18204 func called! thread ID : 18204 */ #include #include using namespace std; void func() { cout
스레드 란? 프로세스를 실행시키는 단위, 하나의 프로세스는 여러개의 스레드(멀티 스레드)로 이루어 질 수 있으며, 동일 프로세스 내에서는 메모리 자원을 공유할 수 있다. C++ thread 참고 : C++레퍼런스 C++11 에서 부터 thread 헤더를 통해 스레드 관련 라이브러리를 사용할 수 있다. std::thread 는 싱글 스레드를 실행하는 클래스이다. 해당 클래스를 사용하면, 별도의 싱글 스레드에서 지정한 함수가 호출된다. /* output : 28580 thread execute! */ #include #include using namespace std; void func() { cout

Range 라이브러리 기존의 열거형 자료구조에 범위 관련 알고리즘을 추가한 라이브러리. (C# LINQ 와 비슷) range : 순회 할 수 있는 아이템 집합를 일컫는다. (ex STL Container) begin() , end() 가 가능해야함. iterator의 상위 호환 느낌인가 view : 아래에서 좀더 자세히 기술 range adoptor : | : range adoptor 오브젝트를 연결(파이프) View 독스도 찾아보고, 블로그도 찾아보았지만, 의미가 잘 와닿지 않아 좀더 찾아보았다. 참고 a view is a range that is semiregular and has constant time copy/move/assignment 뷰는 range의 is-a 관계라고 생각하면 된다. 집합의..
count , count_if template typename iterator_traits::difference_type count( InputIt first, InputIt last, const T& value ); 해당 값 또는 해당 조건식을 만족하는 데이터 개수 반환 vector v = { 1,2,3,4,5,4,3,2,1 }; cout
[C++20] Concepts library cpp 레퍼런스 홈페이지 에서 확인이 가능하다. Concepts 에 관한 내용은 이전 포스트 를 참고 바란다. std::same_as 또다른 타입과 서로 같은 타입인지 구현부 namespace detail { template concept SameHelper = std::is_same_v; } template concept same_as = detail::SameHelper && detail::SameHelper; 사용 예시 template void func(T t, U u) requires std::same_as // 같은 타입으로 안쓰면 오류는 안나오나, 호출시 통과가 안된다. { } ..
[C++20] Concept 개요 C# 에서는 클래스나 함수에다가 Where 절을 통해 제네릭 타입에 대해서 어떤 조건을 부여해줄 수 있었다 C++ 에서도 그와 비슷한 기능이 생겼다. 어떤 타입이 가져야하는 조건들을 정의하는 것이라고 보면 될 듯 하다. concept를 통해 선언 해주고, requires 등을 통해 사용할 수 있다. 사용 방법은 여러가지이다. concept : 제약/ 요구 조건을 기술 및 선언 requires : 해당 타입/템플릿이 가져야하는 제약 조건 지정 이런 제약 조건들은 컴파일 타임에 결정되어, 빌드는 느려질 지언정, 실제 프로그램 실행시에는 빠르게 연산된다. 즉, 컴파일 타임에 결정되는 제약 조건을 어떤 타입에 대해서 지정을 하는 것이다..! 예시 확인 예시를 확인해보자. 다음 ..
타입 최대 최소 define 상수 라이브러리 C# 에서 int.MaxValue와 같이 해당 타입에서 최대/ 최소로 올수있는 상수값을 가져올 수 있다. 물론 C++ 도 가능하다. limits.h 라이브러리를 사용하면된다. 그냥 Visual Studio에서는 바로 사용 가능하다가, 프로그래머스 테스트 웹 IDE 에서 작업하니 오류가 나길래 찾아보게 되었다. int maxValue = INT_MAX; 나 이런식으로 사용할 수 있다. 정의된 상수들을 이용해서 최대/ 최소 값으로 초기화하면 코드가 좀더 보기 편해질 수 있다. #define INT_MIN (-2147483647 - 1) #define INT_MAX 2147483647 #define LLONG_MAX 9223372036854775807i64 #def..