분류 전체보기
-
Structured Paradigms 과 Object paradigmC++ 2014. 3. 20. 20:46
Structured paradigm에서는 모든 작업을 main에서 처리하는 것으로 간주한다. 그러나 이렇게 되는 경우 main이 너무 길어지고 복잡해지므로 이것을 작은 기능으로 분리를 한다. 그리고 이 작은 기능들은 하나의 일만을 처리하도록 한다. 따라서 주식 투자를 하는 트레이딩 프로그램을 만든다고 하면 주식을 검색하여 가격을 알아보는 기능 전체 주식을 실시간으로 출력하는 기능 주식을 사고 파는 기능 개인의 현금과 주식 보유를 검색하여 출력하는 기능 이런 기능들을 일련의 순서로 만들면 사용자가 전체 가격을 출력하고 그 다음에 특정 주식의 가격을 보고 나서 주식을 사고 파는 것을 결정하고 최종적으로 개인 계좌의 밸런스를 조회하는 그런 프로그램이 된다. 객체 지향의 개념에서 보면 이런 무엇을 하는가 하는 ..
-
Big-O NotationC++ 2014. 3. 20. 04:38
Big-O notation은 알고리즘의 복잡도나 성능을 표현하는 방식이다. 이는 절대적인 수치를 보여주는 것이 아니지만 이를 통해서 현재 작성할 프로그램의 알고리즘을 미리 살펴보고 적당한 알고리즘을 선택하는 데 도움을 준다. 특징 플랫폼에 독립적이다. 통계적인 기대치를 표현한다. 모든 종류의 입력 데이타 크기에 대한 실행성능을 보여준다. 실제 실행시간과는 차이가 있을 수가 있다. 사용할 라이브러리가 얼마나 자주 실행될 지에 대한 고려를 해보아야 한다. 10:90의 법칙을 생각할 때 10의 경우에는 별로 차이가 있지 않겠지만 90의 경우의 코드에서는 심각하게 검토를 해보아 야 한다. GoodFairPoorSearching AlgorithmData StructureTime ComplexitySpace Com..
-
Volitile KeywordC++ 2014. 3. 9. 07:52
출처 : http://skyul.tistory.com/337 2006년 9월 마이크로소프트웨어 기고글입니다. 약 60여개의 C++ 키워드 중에 가장 사용 빈도가 낮은 키워드는 무엇일까? 정답은 volatile이다. 대부분의 C/C++ 참고 서적은 1-2줄 정도로 volatile이 컴파일러의 최적화(optimization) 막아준다고만 설명하고 있다. 또한 Java5 이후로 명확한 메모리 모델이 확립된 자바와는 달리 C/C++의 경우 volatile에 대한 명확한 표준이 없고 컴파일러마다 구현에 차이가 있다는 점도 volatile 키워드의 사용을 어렵게 하고 있다. 하지만 임베디드 시스템이나 멀티쓰레드 프로그래밍이 보편화된 만큼, 이 글에서는 volatile 키워드의 기초부터 다시 살펴보고자 한다. vol..
-
Object PoolC++ 2014. 3. 9. 06:46
객체 Pool은 객체 생성/소멸이 많이 발생하여야 하는 객체를 미리 생성하여 Queue에 쌓아 두었다가 요청시 마다 꺼내쓰는 객체 저장소 이다. 실제로 데이타 베이스를 반복적으로 검색하고 변경을 해야 하는 일반 고객 업무 같은 경우는 이런 객체 풀을 사용하며 좀더 놓은 효울을 가질 수가 있다. #include #include #include using namespace std; #define DEFAULT_CHUNK_SIZE 10 template class ObjectPool { private: queue mFreeList; size_t mChuckSize; ObjectPool(const ObjectPool&src); ObjectPool operator=(const ObjectPool&rhs); publ..
-
Dynamic Memory Allocation and Memory LeakC++ 2014. 3. 2. 06:59
동적인 메모리는 runtime에 가변적인 크기를 갖는 메모리를 사용할 때 필수적인 메모리 사용방법이다. 동적인 메모리는 스택에 생성이 되는 데 메모리의 유실을 방지하기 위하여 몇가지 주의 사항이 있다. 대입연산자, 대입 이동연산자는 operator overloading을 해서 private으로 막아서 다른 프로그램에서 사용하지 못하도록 막는다. 이것은 서로 다른 사이즈의 메모리가 할당된 객체간의 데이타 복사를 막기위한 것이다.private: int mWidth; int mHeight; CellPiece** mCell; void CopyFrom(const Fruit& src) throw (bad_alloc); void MoveFrom(Fruit& src); Fruit& operator=(const Frui..
-
Rambda ExpressionC++ 2014. 2. 26. 02:07
Grammer Function을 함수를 작성하지 않고 Inline 시키는 방법이며 코드가 간결해지고 가독성이 높아진다. process(vNum, [&cnt](int num){cnt+=isEven(num);}); [capture] (parameters) mutable exceptions -> returntype {function body} Capture : 함수 외부에 있는 변수를 함수에서 참조하고자 할때 사용하는 변수 Parameter 목록 : Default value 지정이 불가 Variable parameter 불가 Parameter name 지정 Mutable : 외부 변수는 함수 내부에서 참조할 뿐 변경이 불가능하다. 그러나mutable이 선언이 되면 변경이 가능하다. Exception : 함수에..