Language (37)
-
2017.12.27 [C++] 템플릿 이것저것(정리중...)
템플릿 메타 프로그래밍 일반 함수를 써서 재귀호출을 해야하는 문제를, 템플릿 클래스를 이용하면 똑같이 구현할 수 있다. ▶ 템플릿의 원래 기능이 아니라, 템플릿을 이용해서 문제를 푸는 방법 cf. 재귀 호출 방식으로 템플릿을 계속 생성하는 것은, 잘 알려진 대표 템플릿 메타 프로그래밍의 예 템플릿 메서드 패턴 부모 클래스에서 virtual이 아닌 함수 내부에서, 자식의 virtual 함수를 호출한다 자식의 virtual 함수를 호출 : 객체 생성 타입에 따라 적절한 오버라이딩 호출 템플릿 트릭 템플릿 트릭 중 하나가 템플릿 메소드 패턴을 사용하면 virtual 함수를 런타임 때 테이블로 접근해서 호출하는데 이러한 테이블을 접근하는 시간을 단축하기 위해 해결하는 static polymorphism 방법임 ..
-
2017.12.14 List<T>.RemoveAll(Predicate<T>) 함수 개념
기본 설명 : https://msdn.microsoft.com/ko-kr/library/wdka673a(v=vs.110).aspx 사용하면서 나름대로 이해한걸 정리.. List.RemoveAll(Predicate) 함수는 해당 리스트의 모든 원소를 제거하는 함수인데, 매개변수로 원소 각각을 지우는데에 '판단'할 조건을 받는다.( 매개변수에는 / 그 '판단'을 / 리스트의 개별 원소를 인자로 받아 판단 결과를 반환하는 함수로 추상화해서 넘긴다. )여기서 람다식을 사용 여기서 bool형으로 판단 결과로 넘김
-
2015.09.25 [C] 디버깅 중 출력화면에 변수 출력하기
시간과 같은 변수들은 디버깅할때 유의할 점입니다디버깅시 브레이크를 걸었다 하더라도 시간은 계속 흐르니까요 그래서 시간을 알고 싶을때에는 디버깅 중에 시간을 출력하여 확인할 필요가 있습니다. 디버깅에 시간을 출력하기 위해 필요한 함수 sprintf(_s)OutputDebugStringA sprintf 함수 헤더파일#include 원형int sprintf(char* str, const char* format, .....) 사용법매개변수는 차례대로1. 문자열을 저장할 char*형 변수2. " 문자열 "3. , ... 부분은 문자열에 변수가 들어갈 수 있음 문자열을 저장할 변수는 문자열보다 커야하고문자열 마지막에 NULL 문자를 생각하여 항상 문자열보다 1칸 커야한다 => char buff[100]; sprin..
-
2015.09.17 [C++] 메세지 패싱
메세지 패싱이란 무엇인가 메세지 전달 (message passing) 객체지향 관점에서, 프로그램은 오브젝트에 message를 보내는 것으로 실행 12345678910111213141516#include cstdio> void main(){ Dog* dog1; dog1 = new Poodle; dog1.shouting(); //멍멍 Dog* dog2; dog2 = new Bulldog; dog2.shouting(); //왈왈 } cs dog1.shouting(); = 객체 dog1 에 shouting 이라는 메세지를 보낸다실제로는 객체 dog1 의 shouting() 함수 호출 그러니까 dog1 = new Poodle;이거는 실체를 만드는..
-
2015.09.11 [C] 2차원 배열 함수의 매개변수로 보내는 방법
많이 사용하는 2차원 배열을 함수로 보내는 방법 1234567891011121314151617#include void prn(int a[][4], int size); void main(){ int arr[3][4]; prn(arr, sizeof(arr)/sizeof(int));} void prn(int a[][4], int size){ printf("%d \n", a[1][1]);}\cs 3x4 크기의 배열을 arr[3][4] 로 선언하였습니다 13열의 void prn(int a[][4], int size) 이 부분을 보시면 a[][4]로 적혀있습니다 즉, 함수로 이동시킬때에는 2번째 배열크기는 변경하실 수 없습니다앞의 [3] 부분은 변경할 수 있습니다 왜냐하면 arr[3][4] 의 의미는 3개의 배열이..
-
2015.09.02 [C++] 싱글톤에 대한 정리
싱글톤 사용 방법과 싱글톤에 대한 정리 // 싱글톤 사용 방법 class A{private:static A* a;public:static A* Get_Instance(){if(a == NULL)a = new A; //A(); return a;} void func();} ///////////////////////////////////// //클래스 외부 void B::Func(){A* _a = A::Get_Instance(); //원본을 받아옴 _a->func();} 싱글톤은 언제 사용하는가?? 프로그램이 끝나기 전까지 계속 남아있어야할 때 (static) ex) Manager , scene... 장점 : 어디서든 원본을 불러낼 수 있다 만약 상속받는 여러개의 scene에 싱글톤을 사용하면전역변수로 계속 ..
-
2015.08.25 [C++] 함수로 주소값 전달하는 방법
일반적으로 get 함수를 통해 다른 객체 안에 있는 변수의 주소값을 전달해야하는 일이가끔 발생하는데 그때 주소값을 반환하고싶을때에는 반환형* 함수이름(){return &변수명} 이렇게 해주면 됩니다. &변수명을 통해 변수의 주소값이 리턴되고이 주소값은 포인터이므로 반환형이 포인터형인 것으로 이해할 수 있습니다
-
2015.05.29 문자열을 입력받고, 문자의 빈도수 계산하여 출력하기
문자열을 입력받고, 문자의 빈도수를 계산하여 출력해보자! 1. 문자열을 입력받는다 (스페이스바포함) 2. a~z 까지 문자를 저장한다3. 1개씩 문자를 비교하여 문자와 같아면, 값을 1씩 증가시킨다 12345678910111213141516171819202122232425262728293031323334#include #include void main(){ char str[100]; //입력받는 문자열 char alpa[30]; //문자 a~z 저장 int temp[30] = {0, }; //빈도수 저장 int!! int count = 0; char* Return; for(int i=0; i
-
2015.05.29 문자열의 숫자을 더하고 출력하기
숫자 문자열을 진짜 숫자(상수)로 바꿔서 일의자리씩 더하고 출력하여보자 ex) 23sdgds1 을 입력한다면 2 + 3+ 1 = 6 을 출력해야한다. 1. 문자열을 gets 로 입력받는다.2. 숫자 문자열일 경우 상수로 바꿔서 int형 변수에 저장한다.3. int형 총합 변수를 출력한다. 123456789101112131415161718192021#include #include #include void main(){ char str[20]; // int result = 0; // printf("문자열 입력 : "); gets(str); for(int i=0; i - 48 의 의미 result 에는 숫자문자를 진짜 숫자로 바꿔서 저장해야합니다. 아스키코드 표를 참조하시면,문자 숫자는 48~ 57 그래서 '..
-
2015.05.29 단어를 입력받고, 사전 순서대로 출력하기
사용자로부터 10개 이하의 숫자를 입력받고, 사전 순서대로 출력하여 보자. 1. int n 으로 입력할 단어의 개수를 받는다. 2. 단어를 n 수 만큼 입력받는다. 3. Sort 함수를 만들어 정렬을 한 다음, 출력한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include void main() { int n; // /* 왜 2차원 배열인지는 아래에 */ char str[10][20]; printf("입력할 단어 개수?(최대10개) : "); scanf_s("%d", n); for(int i=0; i s..