나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

프로그래밍/테크닉

  • [c++] CRTP를 이용한 다단계 정적 상속으로 코드 최적화하기

    2019.03.07 by ∫2tdt=t²+c

  • [C++] 템플릿 함수를 이용해 STL 컨테이너를 직렬화해보자

    2018.10.05 by ∫2tdt=t²+c

  • [c++] 템플릿 메타 프로그래밍으로 르장드르 다항식 계산하기

    2018.07.08 by ∫2tdt=t²+c

  • [c++ 11] 새로 등장한 유용한 컨테이너들

    2013.08.02 by ∫2tdt=t²+c

  • [c++ 11] 잘 쓰면 매우 편리한 C++ 11의 문법들

    2013.06.08 by ∫2tdt=t²+c

  • 템플릿 함수로 반복문 만들기

    2012.10.22 by ∫2tdt=t²+c

  • 고정소수점 구현해보기 1. 사칙연산

    2012.10.11 by ∫2tdt=t²+c

  • 정수 제곱근 구하기

    2012.10.11 by ∫2tdt=t²+c

[c++] CRTP를 이용한 다단계 정적 상속으로 코드 최적화하기

상속은 객체지향 프로그래밍의 꽃이라고 할 수 있습니다. 상속을 통해 공통되는 코드를 통합하고, 다형성을 확보하는 등 다양한 작업이 가능하지요. C++에서는 일반적으로 클래스와 가상 함수, 상속이라는 문법적 장치를 통해 이러한 개념들이 구현됩니다. 어떤 Data에 대한 처리를 수행하는 클래스 ModelA이 있다고 생각해봅시다. struct Data { int foo, bar; }; class ModelA { std::vector myData; public: virtual void loadData() { // myData에 값들을 채워넣는다~~ } virtual void work() { // myData를 가지고 어떠한 처리를 한다~~ } void loadAndWork() { loadData(); work(..

프로그래밍/테크닉 2019. 3. 7. 20:41

[C++] 템플릿 함수를 이용해 STL 컨테이너를 직렬화해보자

프로그래밍을 하다보면 클래스나 구조체의 내용물을 그대로 파일에 저장하거나, 파일로부터 읽어와야 할 경우가 생깁니다. 구조가 있는 객체의 내용물을 바이트 배열로 저장하는 것을 직렬화(Serialization)이라고 하고, 반대로 바이트 배열로부터 내용물을 읽어와 객체에 채우는 것을 역직렬화(Deserialization)라고 합니다.Java나 C#과 같은 여러 언어에서는 직렬화 기능을 언어차원의 라이브러리로 지원해주는 경우가 많습니다. 따라서 클래스나 구조체의 내용물을 저장하는데에 어려움을 겪지 않죠. 하지만... 당연하게도 C++에서는 언어 자체적으로 그런 기능을 지원하진 않습니다. 직렬화가 하고싶으시다면 직접 짜시면 됩니다. (어떻게 보면 그게 C++의 매력이라고 할수도 있겠죠...?) 사실 이런 꼭 필..

프로그래밍/테크닉 2018. 10. 5. 18:10

[c++] 템플릿 메타 프로그래밍으로 르장드르 다항식 계산하기

르장드르 다항식은 [-1, 1] 구간에서 직교(orthogonality)하는 다항식들의 집합을 가리킵니다. 다항식들간에 서로 직교하면서, 간단하게 곱셈과 덧셈만으로 계산이 가능하다는 특징 덕분에 물리학이나 공학 등의 분야에서 특정 상태를 근사하여 풀 때 직교 기저로 자주 사용합니다. 저 역시도 최근 연구에서 임의의 모양을 띈 다차원 공간의 함수를 근사하기 위해서 이 다항식을 사용했는데요, 이를 위해서 르장드르 다항식을 구현하여 L-BFGS 함수식에 넣어 그 값을 계산해야 할 일이 있었습니다.이 다항식은 재귀적 방법이나 조합식을 이용하여 쉽게 계산될 수 있지만, 이를 매번 함수 값을 구할때마다 반복할 수 없으므로 컴파일 타임에 처리하고자 템플릿 메타 프로그래밍(template meta programming..

프로그래밍/테크닉 2018. 7. 8. 18:26

[c++ 11] 새로 등장한 유용한 컨테이너들

c++ 11로 넘어오면서 표준 컨테이너에 유용한 녀석들이 대게 추가되었는데요, 시간을 잠시 내어 간략하게 살펴보려고 합니다. 1. std::array하하, 이름대로 정말 단순히 배열을 담는 컨테이너입니다. vector와는 무엇이 다르냐? 하면 크기가 고정이 되어있다는 것이지요. #include #include #include int main() { int oldStyle[3] = {1, 4, 3}; int anotherOld[3]; memcpy(anotherOld, oldStyle, sizeof(int) * 3); std::sort(oldStyle, oldStyle 3); for(auto i : oldStyle) { std::cout

프로그래밍/테크닉 2013. 8. 2. 17:14

[c++ 11] 잘 쓰면 매우 편리한 C++ 11의 문법들

C/C++ 언어는 저수준까지 정밀하게 다룰 수 있는 반면, 프로그래머가 일일히 관리해줘야하는 부분이 많다는게 C/C++ 언어에 대한 일반적인 견해입니다. 그래서 저수준까지 일일히 신경쓰지 않아도 되는 쿨한 언어를 가지고 높은 생산성을 추구하는게 추세이기도 합니다. . . . 만, C++의 골수빠로서 C++ 11을 통해 C 로도 충분히 쿨하고 생산성 높은 코-드를 작성할수 있다고 변호를 해보려고 합니다. Visual Studio 2011, 2012 이상을 사용하는 사람이라면 C++ 11의 여러 신 문법을 맛볼수 있는데요, 다른 버전 컴파일러와의 호환성이 굳이 필요한 경우가 아니라면 즐거이 사용할 수 있을거에요. 1. RValue 우측값이라고 하죠. 솔직히 말해 코딩에 편리함을 가져다 주지는 않는 녀석이고 ..

프로그래밍/테크닉 2013. 6. 8. 04:49

템플릿 함수로 반복문 만들기

시험기간이라 그런지 잉여력이 폭발해서 c 템플릿을 이용해서 반복문을 대신해보면 재밌겠다는 생각이 들었다. 상수번 반복하는 데 굳이 for문에 제어변수까지 쓰기 싫어서 ㅋ #include #include template void doLoop(std::function f) { f(); doLoop(f); } template void doLoop(std::function f) { } int main() { doLoop([](){ printf("Yay!\n"); }); return 0; } 아... c 11이 아니라면 좀 곤란함.ㅋ 템플릿은 재밌져!

프로그래밍/테크닉 2012. 10. 22. 20:16

고정소수점 구현해보기 1. 사칙연산

고정소수점은 우리가 흔히 사용하는 float나 double과는 달리 소수점 자리가 늘 고정한 채로 실수를 표현하는 방식을 말합니다. 표현범위가 넓지 않아서 자주 쓰이지는 않지만, 정밀도가 그다지 필요없는 경우, 단순한 실수연산을 위해서 사용할수가 있습니다. 대표적인 예로 스타크래프트2 트리거나 게임 데이터에서 사용되는 실수가 고정소수점이라고 판단되는데요, 예를 들어 유닛의 체력과 같은 경우, 그냥 정수형 데이터가 사용될거 같지만, 실제로는 고정소수점 포맷을 사용하는거 같습니다.(제가 개발자가 아니라 정확히는 모르지만... 여러가지 정황을 보고 추측하는 것입니다.) 저그 유닛은 초당 체력이 0.24씩 회복이 되어야하니 정수형 데이터를 쓰기에는 좀 뭐시기하지요. 부동소수점형을 쓰기엔 연산 부하가 많이 걸릴거..

프로그래밍/테크닉 2012. 10. 11. 17:46

정수 제곱근 구하기

가끔씩 정수의 제곱근을 구해야할 경우가 가끔씩 있는데, 이때 가장 편한 해결책은 float로 캐스팅해서 sqrt()함수에 넣은뒤 다시 int로 캐스팅하는 것입니다. 요즘 CPU들은 워낙 좋아서 부동소수점 제곱근 연산은 뚝딱 해치우니 속도 걱정은 할 필요가 없지요. 다만... 부동소수점 연산이 잘 지원안되는 환경에서 코딩을 하는 경우에는 정수 제곱근을 구하기위해 선뜻 sqrt함수를 쓰기가 꺼려집니다. 그래서 간단한 연산을 통해 정수 제곱근을 구해내는 함수를 구현해보도록 하겠습니다. int isqrt(int n) { if(n = 0;++i) { n -= 2*i + 1; } return i-1; } 정수 제곱근..

프로그래밍/테크닉 2012. 10. 11. 03:10

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

c++ 우리역사바로알기대회 문헌정보통계 토픽 모델링 악보 Direct3D php 포니게임 리듬게임 한국고대경제와사회 영어구조론 자연언어처리 정보조직론 NLP 텍스트 마이닝 BigFloat python 라틴어 pg어 kiwi

방문자

오늘
어제
전체

페이징

이전
1 2 3 4
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바