이름공간 (name space)  


왜생겼을까? 함수나 심볼들이 있는 공간을 명확하게 하자 ..  필수는 X


namespace first

{

int x = 5;        // 정수형 x 는 그룹 first의 멤버

}


std::cout << "x=" << first::x << std::endl;            // first그룹에 있는 x를 쓰겠다!


일일이 하는게 귀찮다면


using first::x 를해주면


cout<< "x=" << x << endl;    // first 의 x를 찾음


using namespace first를 하면 일단 first 그룹에서 찾고 없다면 순서대로 찾아서 나온걸씀.


cout<< "x=" << x << endl;    // first 의 x를 찾음, 없다면 순서대로 찾아서 나온걸씀


그룹이 없는 전역공간은 


ex) ::i  


first그룹의 i는


ex) first::i


first그룹 안의 second그룹의 i는


ex) first::second::i


------------------------------------------------------------------------------------------------------------------------------------------------------------------------


템플릿 


코드의 재사용성을 위해

각 함수들의 구성은 완전 똑같지만 타입,인자가 다를때 코드의 재사용성을 위해 하나로 합침.


int max(int a,int b)

{

return a > b ? a : b;

}

char max(char a,char b)

{

return a > b ? a : b;

}

double max(double a,double b)

{

return a > b ? a : b

}


이 세가지를 함수 템플릿을 이용하여 하나로 합침!

template <class T>

T max(T a,T b)

{

return a > b ? a : b;

}


원래 함수만들때 선언은 헤더(.h)파일에 정의는 (.cpp) 파일에 작성했는데

템플릿을 사용할경우엔 헤더(.h)파일에 다 작성해야함.

왜냐하면, 아직 타입이 정해지지않았기 때문에 실행시 exe파일에 오브젝트로 만들어 질수 없기 때문이다.



STL 과 템플릿은 나중에 필수 ! 잇힝


typedef 을 활용하즈아!


#include "stack.h"

ex) typedef Stack<double> StackDouble        // 이제 StackDouble 이라는 실수형스택 타입을 하나 만든것이여

    StackDouble a;       // a는 실수형 스택



------------------------------------------------------------------------------------------------------------------------------------------------------------------------


표준 템플릿 라이브러리 (STL) - 오늘 제일 중요한 것!


어음청 ! 좋은것


1. 컨테이너 : 데이터(객체)를 담는 바구니(객체) , 가장 중요한 것. 바구니에 데이터를 담고 빼고 ~


2. 반복자 : 포인터를 일반화한 것


3. 함수객체 


4. 어댑터 : 기존이 객체를 사용자가 변겨에서 새로운 객체를 만드는것.


5. 알고리즘 




1 컨테이너


순차적 vs 연관적 컨테이너


순차적 : vector, list, deque  


연관적 : map , multimap, set, multiset





------------------------------------------------------------------------------------------------------------------------------------------------------------------------


vector


정적 배열 과 동적 배열의 장점을 모은것이 vector


#include<vector>    //여기서 .h가 붙는 헤더들은 c언어의 라이브러리임.


vector <int> v0; // default 생성  크기 = 0

vector <int> v1(3); // 크기는 3 각각의 값은 0으로 채워짐

vector <int> v2(5,2);  // 크기는 5 각 값은 2로 채워짐

vector <int> v4(v2); // v2의 복제본을 생성

vector <int> v(v4.begin()+1, v4.begin()+3);  //  v4의 부분 복제본 벡터를 생성


v.begin() 벡터의 첫 번째 위치

v.end() 벡터의 마지막 위치의 다음 위치



------------------------------------------------------------------------------------------------------------------------------------------------------------------------


deque , list

deque = vector에 맨처음 위치의 추가 삭제 고려

list = deque에 중간 위치의 추가나 삭제 고려












'게임프로그래밍(c++)' 카테고리의 다른 글

4. 연관 컨테이너들 , set ~  (0) 2017.03.29
1. c언어 개요  (0) 2017.03.08

+ Recent posts