일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해리스 코너 검출
- 모두의 딥러닝
- TensorFlow
- 모두의 딥러닝 예제
- MFC 프로그래밍
- 팀프로젝트
- pytorch zero to all
- 컴퓨터 비전
- c++
- 파이토치 김성훈 교수님 강의 정리
- 파이토치 강의 정리
- C언어 공부
- c언어
- 골빈해커
- tensorflow 예제
- 딥러닝
- pytorch
- c언어 정리
- c++공부
- matlab 영상처리
- 파이토치
- Pytorch Lecture
- 영상처리
- 김성훈 교수님 PyTorch
- 가우시안 필터링
- object detection
- 딥러닝 공부
- 케라스 정리
- 딥러닝 스터디
- 미디언 필터링
- Today
- Total
목록Programming Language (50)
ComputerVision Jack
[함수 포인터와 void 포인터] 함수 포인터 메모리상에 저장된 함수의 주소 값을 저장하는 포인터 변수 함수의 이름도 함수가 저장된 메모리 공간의 주소 값을 의미한다. 함수의 포인터 형(type) 반환형과 매개변수의 선언을 통해서 결정된다. 함수 포인터 변수 선언 int (*ptr) (int) : ptr은 포인터 int (*ptr) (int) : 반환형 int인 함수 포인터 int (*ptr) (int) : 매개변수 선언이 int 하나인 함수 포인터 void Simpe (int x1, int x2){ ... } void (*ptr) (int, int) = Simple; ptr(num1, num2); #함수 포인터 실제 사용 형(Type)이 존재하지 않는 void 포인터 void * ptr; #void포인..
[C++의 표준 String 클래스] String 클래스 C++표준 라이브러리에 정의된 함수. 문자열의 처리를 목적으로 정의된 클래스. 헤더파일을 포함해야한다. string클래스 또한 연산자에 대하여 오버로딩되어 있다. [문자열 처리 클래스 정의] 문자열 인자로 전달받는 생성자 정의 string str = "Hello"; string str("Hello"); #두 코딩은 같은 동일한 내용이다. 생성자, 소멸자, 복사생성자, 대입 연산자 정의 String 클래스는 문자열 저장 및 표현하는 클래스이다. 하지만 이러한 문자열은 길이가 일정하지 않기 때문에, 모모리 공간을 생성자를 통해 동적으로 할당해야 한다. +연산자 오버로딩 String str3 = str1 + str2; +연산자의 반환 값 문자열의 주소값..
[포인터에 대한 포인터] 이중 포인터 포인터 변수를 지칭하는 또 다른 포인터 변수를 뜻한다. = 더블포인터 int **dptr; #*연산자 2개를 사용하여 나타낸다. 포인터 변수를 가리키는 이중 포인터 변수 포인터 변수는 주소값을 저장하는 변수다. 미리 선언된 포인터 변수를 대상으로 이중포인터에 그 주소값을 대입할 수 있다. int *ptr = # int **dptr = &ptr; *dptr = ptr의 주소 값을 의미한다. *(*dptr) = num안의 값을 의미한다. [포인터 배열과 포인터 배열의 포인터형] 배열이 가리키는 첫번째 요소는 싱글 포인터이다. 배열의 이름은 이중 포인터가 된다.
[대입 연산자 오버로딩] 대입 연산자 오버로딩은 복사 생성자와 매우 유사하다. 디폴트 대입 연산자 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 디폴트 대입 연산자는 멤버 대 멤버 얕은 복사를 진행한다. 동적할당을 할 경우, 직접 정의해야 한다. Sample s1(5, 10); Sample s2(10, 20); s2 = s1; # s3.operator=(s1); 의 의미를 멤버 함수 방식으로 내포하고 있다. 디폴트 대입 연산자 문제점 복사 생성자의 문제점과 마찬가지로 소멸자 호출과정에서 문제가 발생한다. 상속 구조에서 대입 연산자 호출 유도 클래스의 대입 연산자에 아무런 명시를 하지 않으면 기초 클래스 대입 연산자가 호출 되지 않는다. 유도 클래스 대입 연산자 정의에서 명시적으로 기초 클래스 대입 연산..
[다차원 배열 이해와 활용] C언어는 4차원 이상의 배열선언을 문법적으로 허용하고 있다. 2차원 배열 TYPE arr[행의 길이][열의 길이]; #sizeof() 함수를 이용하여 배열의 크기를 확인할 경우 행 x 열 x 자료형 크기이다. 2차원 배열 요소에 접근 이중 for문을 이용하여 행과 열에 대해 각각 접근한다. for(i = 0; i < row; i++) for(j = 0; j < col; j++) arr[i][j] 2차원 배열 메모리 할당 형태 2차원 배열도 메모리상에는 1차원의 형태로 존재한다. 2차원 배열 선언과 초기화 2차원 배열도 1차원 배열과 똑같이 초기화하면된다. 크기에 맞지 않게 초기화 하지 않으면 자동으로 0으로 초기화된다. 하지만 배열의 크기에 대한 명세는 행과 열 둘중에 하나는..
[연산자 오버로딩 이해] Sample operator+(const Sample & ref){ } operator 키워드와 연산자를 묶어서 함수의 이름을 정의하면 함수의 이름을 통하거나 연산자를 통하여 함수를 호출 할 수 있게 한다. 연산을 할때, 피연산자가 객체일 경우, 클래스 안에 정의된 연산자 재정의를 통하여 함수를 불러온다. 이러한 연산자 재정의 함수는 const로 선언하지 않는다. 연산자 오버로딩 멤버 함수에 의한 연산자 오버로딩 - 객체.operator+(객체) 전역 함수에 의한 연산자 오버로딩 - operator+(객체, 객체) 연산자 오버로딩 주의사항 의도를 벗어난 연산자 오버로딩은 좋지 않다. 연산자의 우선순위와 결합성은 바뀌지 않는다 매개변수의 디폴트 값 설정 불가하다 순수 기능은 보존한..
[함수 인자 배열 전달] 함수의 인자 전달 방법 : 복사 함수호출 시 전달되는 인자의 값은 매개 변수에 복사된다. 실제로 전달되는 것은 던져주는 매개 변수가 아닌, 매개변수에 저장된 값이다. 매개변수로 배열을 선언할 수 없다. 배열을 넘겨 받으려면 배열의 주소 값을 전달 받아야 한다. 배열을 함수 인자로 전달하는 방법 포인터 변수를 사용하여 매개 변수로 던져준다. void ShowArayElem (int * param, int len) { ..... } void ShowArayElem(int param[], int len) { ........} [Call-by-value & Call-by-reference] call-by-value : 함수 호출시 단순히 값 전달 call-by-reference : 메모..
[포인터와 배열] 배열 이름 배열 이름은 포인터. 값을 바꿀 수 없는 상수 형태의 포인터이다. 따라서 배열의 이름은 배열의 시작 주소 값을 의미하며, 값 저장이 불가능한 상수다. 배열은 시작 주소만 알면 자료형을 통해 다음위치를 예측할 수 있기 때문이다. 배열 이름도 포인터이기 때문에 *연산이 가능하다. 포인터를 배열의 이름처럼 사용할 수 있다. int *ptr = &arr[0]; #ptr[0] = arr[0]과 같은 의미이다. [포인터 연산] 포인터는 *연산 이외에도 증가 감소 연산자도 사용할 수 있다. int형 포인터 1증가 - > 주소값 4 증가 double형 포인터 1증가 - > 주소값 8증가 *(++ptr) : ptr에 저장된 값 자체를 변경 *(ptr+ 1) : ptr에 저장된 값은 변경되지 ..