Languages

    vector 사용 후 메모리 반환하는 방법

    int _tmain(int argc, _TCHAR* argv[]) { vector v(0); v.push_back(10); cout

    #include " " 와 #include <>

    #include : stl이나 내장 라이브러리등 범용적으로 쓰이는 라이브러리 인클루드시#include " " : 사용자 정의 파일 인클루드시 차이점은 없다.

    일반화 템플릿과 특수화 템플릿

    //일반화 클래스 템플릿 template class Mae{ private: T n; public: explicit Mae(T _n):n(_n); }; //특수화 클래스 템플릿 template class Mae{ private: string n; public: explicit Mae(string _n):n(_n); }; //일반화 함수 템플릿 template void Print(T a){ } //특수화 함수 템플릿 template void Print(string a){ } 일반화 클래스나 일반화 함수에서 정의한 템플릿에서특수한 자료형의 경우를 대비하기 위한 것이 특수화 템플릿이다.위의 예제에서 string의 경우만 다르게 실행시키고 싶다면string을 정의한 특수형 템플릿을 사용한다.

    [펌]typedef으로 새로운 데이터형의 이름을 정의하는 방법

    C언어에서는 typedef라는 키워드를 사용하여 기존 데이터형의 이름을 새롭게 부여하는 방법을 제공하고 있습니다. 이번 포스트에서는 typedef을 사용하는 방법을 설명합니다. 이번 포스트의 주요 내용 1. typedef로 새로운 데이터형 이름 정의하기 2. typedef의 장점 typedef로 새로운 데이터형 이름 정의하기 다음과 같은 형식으로 기존 데이터형의 새로운 이름을 정의할 수 있습니다. typedef (기존 데이터형의 이름) (새로운 데이터형의 이름); 예를 들어 int형의 새로운 이름으로 number를 부여하고, 이에 대한 변수를 정의할 수 있습니다. typedef int number; number num; 참고로 기존 이름과 새 이름의 데이터형으로 정의되는 변수들은 100% 호환됩니다. 단..

    [펌]헤더파일 중복방지 #pragma once vs #ifndef~#endif

    헤더파일 중복컴파일 방지를 위해 쓰이는 지시자에는 두 가지 종류가 있다. 바로 #pragma once 와 #ifndef~#endif 이다. 그렇다면 과연 이 두 개의 지시자의 차이는 무엇일까? 간단한 예제를 통해 알아보겠다. 1. #ifndef ~ #endif First.h #ifndef __First_h_ #define __First_h_ class First { ......생략...... }; #endif Second.h #ifndef __Second_h_ #define __Second_h_ #include "First.h" class Second { ......생략...... }; #endif Main.cpp #include "First.h" #include "Second.h" void main()..

    [펌]전처리기, 컴파일러, 어셈블러, 링커의 역할

    컴퓨터는0과 1로 이루어진 이진코드(바이너리 코드)만 이해 할 수 있습니다. 따라서 C/C++언어로 컴퓨터에게 명령을 내릴 때에는 C/C++언어를 이진코드(기계어)로 번역하는 과정이 필요합니다. ▼ 소스 코드가 실행 파일이 되기까지의 과정 전처리기 #으로 시작하는 지시자에 따라 실행파일 생성에서 가장 먼저 실행됩니다.소스 코드의 주석 제거, define 치환 등. 컴파일러전처리기를 거친 소스 코드는 컴파일러에 의해서 어셈블리 코드로 변환됩니다.어셈블리 코드는 CPU 명령어 조합입니다. (어셈블리어는 CPU에 의존적) 어셈블러컴파일러를 거친 어셈블리 코드는 어셈블러에 의해서 오브젝트 코드로 변환됩니다.오브젝트 코드는 0과 1로 구성된 이진 코드이며, 주소 정보는 확정되지 않은 상태입니다. 링커어셈블러를 거..

    [펌]Function

    Functor C++에서는 객체를 마치 함수처럼 사용 가능한 펑터가 존재한다. 펑터는 다른 말로 함수객체, 함수자, 펑션옵젝트등 많은 이름이 존재한다.(하지만 결국 다 같은말) 쉽게 생각해서 C의 함수포인터를 class의 형태로 써먹는다고 생각하면 될것 같다. 이전 스마트포인터 처럼 함수를 객체로 랩퍼 했다고 생각하면 편할것 같다. 일단 소스를 보자 #include #define MAX 10 struct Rule { // Fucntor bool operator()(int x, int y) const { return (x > y) ? true : false } }; 객체를 가지고 함수처럼 작동 시킨다고 했는데 웬 구조체가 등장했다. 한가지 짚고 넘어가야 할 것은 C++에서는 class나 struct 나 1..