C++
-
explicit specialization of 'function name' in class프로그래밍/의문 2018. 5. 1. 21:08
클래스 안에서 '함수 이름'의 명시적인 특수화를 했습니다. 윈도우 x64에선 발생하지 않았으나 닌텐도 플랫폼 설정으로 빌드 시 발생했다.템플릿 특수화 함수의 정의가 class 안에 있어서 발생하는 오류 메세지이다.예를 들면 다음과 같은 코드일 때 해당 에러가 발생할 수 있다. class Foo{ public: template Type GetValue() const { return Type{}; } template std::string GetValue() const { return std::string{}; }}; 다음 코드처럼 정의를 외부로 빼서 오류를 해결했다. class Foo{ public: template Type GetValue()..
-
boost::asio dynamic buffer프로그래밍/c++ - boost::asio 2018. 5. 1. 14:06
asio에 dynamic_buffer라는 것이 추가되었다.asio::streambuf와 비슷하지만, 기존의 stl 컨테이너(std::vector, std::string 등)을 래퍼런스로 받아 조작하는 어뎁터 클래스이다.사용 방식은 다음과 같다. #include #include int main(){ using DynamicBuffer = boost::asio::dynamic_vector_buffer; std::vector buffer; DynamicBuffer dynamicBuffer = boost::asio::dynamic_buffer(buffer); return 0;} api도 기존의 asio::streambuf와 흡사하며 메모리를 공간을 확보, 반환해주는 prepare 함수의 경우 다음과 같이 구현되..
-
shared_ptr의 래퍼런스 카운팅은 스레드 세이프 한가? 정말?프로그래밍/c++ 2018. 4. 22. 13:23
// CLASS _Ref_count_baseclass _Ref_count_base{// common code for reference countingprivate:virtual void _Destroy() _NOEXCEPT = 0;virtual void _Delete_this() _NOEXCEPT = 0; _Atomic_counter_t _Uses;_Atomic_counter_t _Weaks; // .... long _Use_count() const _NOEXCEPT{// return use count return (_Get_atomic_count(_Uses));} 스레드 세이프 하다. 여기에서 스레드 세이프 하다는 건 감싸진 오브젝트가 아닌 래퍼런스 카운터를 관장하는, 컨트롤 블록이 스레드 세이프 하다..
-
poll api 이벤트들프로그래밍/기록, 개념, 용어 2018. 4. 18. 11:43
PollFd.events 에 체크할 이벤트 목록을 지정한다. |로 비트를 결합하여 여러 개를 줄 수 있다. PollFd fd;fd.events = PollRdNorm | PollWrNorm; Poll 함수가 성공적으로 호출되면 revents 인자에 감지된 이벤트가 등록되어있다. 여러 개의 이벤트가 한 번에 등록되며, bit연산자 and(&)를 통해 체크할 수 있다. Poll(fd); if(fd.revents & PollRdBand){// RdBand 처리 ...} if(fd.revents & PollRdNorm){// RdNormal 처리 ..} events와 revents에 세팅되는 이벤트의 의미는 다음과 같다. PollIn : 높은 우선 순위가 아닌 데이터를 읽을 수 있다. 블러킹 없이 PollPri..
-
std::variant는 참 빠르다프로그래밍/c++ 2018. 4. 18. 00:35
빠를 수 밖에 없다. 요소의 인덱스를 메타프로그래밍을 이용해 컴파일 타임에 계산하니까.그리고 get은엑세스할 요소의 위치를 재귀적으로 찾는다. constexpr이니 마찬가지로 컴파일 타임. ++ 근데 get이 constexpr 함수인데 constexpr if도 아닌 일반 if가 있을 수 있나? constexpr은 모두 컴파일 타임에 결정되어야 한다고 알고 있다. 내가 잘못 알고 있는 것일 수도 있을 거 같은데, constexpr 함수 동작에 대해선 좀 더 알아봐야겠다.
-
boost 의존성 없이 사용하기. asio standalone프로그래밍/c++ - boost::asio 2018. 4. 7. 19:20
asio를 boost 의존성 없이 단독으로 사용할 수 있다. 0. https://think-async.com/Asio/Download에서 asio를 다운 받는다.1. asio 소스를 프로젝트 내에 포함한다.2. 전처리기를 정의한다. #define ASIO_STANDALONE 그러면 boost가 아예 없어도 asio를 사용할 수 있다. ASIO_STANDALONE이 정의가 없으면 boost 의존성이 있으므로 주의!! boost::system::error_code -> asio::error_code 등으로 바뀌는 것들도 있다.
-
게임에서의 아이템 강화, n번 했을 때 성공할 확률은 어떻게 될까?프로그래밍/의문 2018. 2. 26. 18:50
확률이 x%일 때 몇 번 시도해서 성공할 확률은 어떻게 구할지 궁금했다. 무언가를 테스트 할 때 성공, 실패 처럼 두 가지의 결과만 일어나는 테스트를 베르누이 시행이라고 말한다.베르누이 시행의 분포 함수는 p^x * (1-p)^(1-x) // 단, x == 0 || x== 1다만 베르누이 분포 함수 한 번의 시도에 대한 독립적인 확률이다. c++ 코드로 풀면..unsigned long long factorial(unsigned long long n){ return n