전체 글 169

[C++] most vexing parse, 성가신 파싱

most vexing parse 이하 성가신 파싱은 선언으로 해석할 수 있는 것은 선언으로 해석해야 한다.는 규칙이다.예를 들어 아래같은 코드를 보자.  여기서 MyClass a() 를 생각해보자.이 구문은 2가지로 해석될 여지가 있다. 1. 함수 선언2. 객체의 생성 (기본생성자 호출) 그런데 '성가신 파싱'에 의해 무조건 '선언'으로 해석된다.  분명 생성자는 호출했다고 생각했는데생성자가 호출이 안된 것을 볼 수 있다. 따라서 '성가신 파싱'을 회피하기 위해서 객체를 선언하고 싶다면 언제나 중괄호 초기화를 사용하는 것을 권장한다.

언어/C, C++ 2024.07.05

[멀티스레드 프로그래밍] C++ 동시성 프로그래밍 개론

참고사항C++ : Concurrency In Action (원서) 바탕으로 적은 글 입니다.해당 포스팅은 해당 저서의 번역보다는 번역 및 (제 기준으로) 이해하기 쉽도록 재구성한 부분이 다수 있습니다.주의해서 읽으시길 바랍니다. 필수 사전지식C++ 에 대한 전반적인 이해 권장 사전지식운영체제에 대한 기본적인 이해하드웨어, 프로세서 및 스레드에 대한 기본적인 이해동기화 및 교착상태(Deadlock)에 대한 기본적인 이해 C++11 표준에서 가장 눈여겨봐야할 새로운 기능 중 하나는 멀티스레드 프로그래밍에 대한 지원이다.C++ 표준이 처음으로 언어 내에서 멀티스레드 응용 작성을 위한 라이브러리의 구성 요소를 제공하게 되었는데,이를 통해 운영체제나 플랫폼에 종속되지 않고 멀티스레드 C++ 프로그램을 작성할 수 ..

union은 이렇게 쓰는거군요?

솔직히 어디에 쓸지 좀 애매한 감이 있었는데며칠전 잘 구조화된 코드를 보고 아! 유니온은 이렇게 쓰는 거구나!탁 뭔가 시야가 트인 느낌입니다. 해당 코드는 3x3 매트릭스에서행렬에 접근하는 모습을 담고 있습니다.e11 ... e33은 _matrix와 완전히 동일한 메모리 주소 공간을 사용합니다. 역시 좋은 코드는 보는 것 만으로 참 배울게 많은 것 같습니다.

잡담 2024.07.02

공부목적으로 사용할 수학 라이브러리

공부 목적으로 직접 만들어서 사용하고 있습니다.지금은 그냥 복붙 형식으로 올리는 데 나중에 깃허브로 정리해서 재업로드 하겠습니다.아마 공부 진도에 따라 더 업데이트 될 겁니다. 현재는 3차원 벡터만 있습니다. 1. Vector3D.h더보기#pragma once class Vector3 { public: // 생성자 inline constexpr Vector3(void) : _x(0.f), _y(0.f), _z(0.f) {} inline explicit constexpr Vector3(float x, float y, float z) : _x(x), _y(y), _z(z) {} inline explicit constexpr Vector3(int32 x, int32 y, int32 z) : _x((float)..

[물리엔진] 물리학의 기초 - 기본 개념

1. 뉴턴의 운동법칙1687년 즈음 아이작 뉴턴은 역학에 대한 자신의 생각을 운동법칙으로 정의하여 라는 책을 집필하였고, '뉴턴의 운동법칙'은 해당 저서에 기록된 운동법칙이다. 이는 모든 역학의 기본인 고전역학 중에서도 제일 기본적인 법칙이자 공리이기 때문에, 매우 중요하다. [1] 배경지식 (1) 질량 (Mass)물체가 가진 물질의 양을 나타내며, 고전역학에서는 질량이 불변한다고 가정한다. (2) 힘 (Force)힘은 물체의 운동 상태를 변화시키는 요인이다.운동 상태의 변화란 속도의 변화, 즉 가속도를 의미한다.따라서 힘은 물체를 가속시키는 원인으로도 이해할 수 있다. (3) 관성 (Inertia)관성은 물체가 외부의 힘이 없을 때, 자신의 운동 상태를 유지하려는 성질이다.더 엄밀하게 '물체가 받는 외..

[수학] 행렬: 가상 세계의 변환 도구

1. 선형성: 예측 가능한 비례 관계 원점을 지나는 임의의 직선을 생각해보자.이러한 직선은 선형성이라는 성질을 가진다. 수학에서는 선형성을 다음과 같은 가법성과 1차 동차성 두 가지 조건을 모두 만족하는 함수의 성질로 정의한다. (1) 가법성 (2) 동차성 [1] 선형 함수입력에 사용하는 요소 x와 출력이 모두 실수인 함수에서 원점을 지나는, 다음과 같은 직선의 함수를 생각할 수 있다. 출력의 원소를 y라고 표시했을 때 위 함수는 y = ax로 표현되며, 이를 그래프로 나타내면 위 그림과 같다.이러한 직성 형태를 띠는 이 함수가 선형성을 만족하는지 확인해보자. (1) 가법성을 만족하는가?f(x1 + x2) = f(x1) + f(x2) 가 동일한지 확인해보자. f(x1 + x2) = ax1 + ax2f(x..

[수학] 삼각함수: 회전을 위한 수학

이전글https://powerclabman.tistory.com/111 [수학] 벡터: 가상 공간의 탄생이전글https://powerclabman.tistory.com/110 [수학] 수: 가상 세계를 구성하는 가장 작은 단위1. 수와 집합가상 세계를 이해하기 위한 첫걸음은 집합이라는 개념으로 수를 이해하는 것이다.중고등학교 수powerclabman.tistory.com 여담)예전 삼각비, 삼각함수 관련 포스팅에 중고등학생 분들이 꽤나 많이 들어오셨습니다.공부하려고 들어오셨을텐데, 제가 포스트를 누구를 보여주는 목적으로 쓰는게 아니다 보니지식을 획득하려는 용도로는 매우 부적합했을겁니다. 해당 포스팅도 그렇구요(물론 이번 포스팅은 저번 포스팅보다 더욱 알차고 신경쓴 내용입니다.) 제가 다루는 삼각함수는 중..

[수학] 벡터: 가상 공간의 탄생

이전글https://powerclabman.tistory.com/110 [수학] 수: 가상 세계를 구성하는 가장 작은 단위1. 수와 집합가상 세계를 이해하기 위한 첫걸음은 집합이라는 개념으로 수를 이해하는 것이다.중고등학교 수학에서 배운 집합은 '서로 구분되는 원소로 구성된 묶음'을 의미한다.이러한 집합론powerclabman.tistory.com 1. 데카르트 좌표계[1] 데카르트 좌표계실수와 실수의 곱집합을 사용하면 직선으로 표현되는 영역을 평면으로 확장해 표현할 수 있다.이렇게 직선의 수 집합을 수직으로 배치해 평면을 표기하는 방식을 데카르트 좌표계라고 부른다.곱집합의 원어가 데카르트 곱임을 생각해본다면 이 둘은 동일한 개념임을 알 수 있다.데카르트 좌표계는 위 그림과 같이수평으로 배치한 실수 집합..

[수학] 수: 가상 세계를 구성하는 가장 작은 단위

1. 수와 집합가상 세계를 이해하기 위한 첫걸음은 집합이라는 개념으로 수를 이해하는 것이다.중고등학교 수학에서 배운 집합은 '서로 구분되는 원소로 구성된 묶음'을 의미한다.이러한 집합론을 소박한 집합론이라고 한다. 소박한 집합론의 관점에서는 용도에 따라 수집합을 정의하여 구분하는데대표적으로 자연수, 정수, 유리수, 실수, 복소수, 사원수 등이 있다.각 수집합은 다음과 같이 정의할 수 있다. 자연수- 정의자연수는 1, 2, 3 .. 과 같은 양의 정수를 포함한다.0을 포함하는 경우도 있는데, 이 경우는 '확장된 자연수 집합'이라고 표현한다.일반적으로는 양의 정수를 자연수라고 정의한다.- 기호N정수- 정의정수는 음의 정수, 0, 양의 정수를 모두 포함하는 수의 집합이다.정수는 덧셈, 뺄셈, 곱셈 연산에 대해..

[알고리즘 스터디 솔루션] 17404, 10282, 13418

1. 17404 :: RGB거리 2https://www.acmicpc.net/problem/17404  1) 풀이해당 문제는 주어진 시간이 매우 적고, 현재의 최적해가 미래의 최적해의 부분이 아닐 수 있기에다이나믹 프로그래밍 기법으로 풀어야 한다. 이전 집의 색을 고려하여현재 집의 색을 고르는 방식으로쉽게 풀이할 수 있다. 2) 주의할 점첫 번째 집의 색을 계속 기억해야 하므로2중 혹은 최대 3중 배열까지 고려해볼 수 있다. 3) 솔루션더보기#include  #define INF 900'000'000 using namespace std; int N; int arr[1001][3]; int dp[1001][3][3]; enum COLOR { R, G, B, NONE }; int Solution(int id..

스터디 자료 2024.05.29