본문 바로가기
반응형

C++12

[C++] Ubuntu에서 OpenCV 라이브러리를 포함하여 빌드하는 방법 opencv를 cmake를 통해 makefile을 생성하고 make를 사용하여 빌드 1. 소스 코드가 존재하는 위치에 CMakeList.txt 파일 생성 를 빼고 자신에게 맞는 형식으로 바꿔주기 cmake_minimum_required(VERSION ) project() find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable( .cpp) target_link_libraries( ${OpenCV_LIBS}) 예) cmake_minimum_required(VERSION 3.26.4) project(HelloCV) find_package(OpenCV REQUIRED) include_directories(${.. 2023. 7. 12.
[C++] const 정리 const란? const란 변수의 값을 상수임을 지정하고 프로그래머가 수정하지 못하도록 컴파일러에게 지시하는 키워드 const를 사용하게 되면 다음과 같이 값을 수정하려고 할 때 오류를 발생시킨다. 수정하면 안되는 상수를 수정하는 것이므로 오류가 발생하게 된다. 이를 잘 사용하게 되면 실수로 수정하여 프로그램을 망치는 일을 방지할 수 있다. 포인터와 const 포인터 변수에도 const 키워드를 사용할 수 있다. 포인터 변수에 const를 사용하게 되면 위와 같이 *연산자를 사용해 간접참조를 하여 값을 변환하려고 할 때 오류를 발생시킨다. 하지만 여기서 const는 const int*가 아닌 const int에 적용되기 때문에 주소 값은 변경이 가능하다. 상수 포인터 상수 포인터를 사용하면 const가 .. 2023. 3. 7.
[알고리즘c++] 삽입 정렬(Insertion Sort) 삽입 정렬 요약 카드를 정렬하는 방법과 유사하다 새로운 카드를 기존의 정렬된 카드 사이 올바른 자리를 찾아서 삽입하는 방식이다. 새로 삽입될 카드의 수 만큼 반복하여 정렬 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하며, 자신의 위치를 찾아서 삽입하여 정렬을 완성하는 알고리즘 매 순서 마다 해당 원소를 삽입할 수 있는 위치를 찾아 해당 위치에 넣는다. 삽입 정렬 알고리즘 두 번째 자료부터 시작하여 앞의 자료들과 비교하여 삽입할 위치를 지정한 후 삽입 즉, 두 번째 자료는 첫 번째 자료, 세 번째 자료는 두 번째와 첫 번째 자료, 네 번째 자료는 세 번째, 번째, 첫 번째 자료와 비교한 후 자료가 삽입될 위치를 찾는다. 자료가 삽입될 위치를 찾았다면 그 위치에 자료를 삽입하기.. 2022. 11. 21.
c++ 백준 10178 할로윈의 사탕 할로윈의 사탕 알고리즘 분류 수학 사칙연산 https://www.acmicpc.net/problem/10178 10178번: 할로윈의 사탕 할로윈데이에 한신이네는 아부지가 사탕을 나눠주신다. 하지만 한신이의 형제들은 서로 사이가 좋지않아 서른이 넘어서도 사탕을 공정하게 나누어 주지 않으면 서로 싸움이 난다. 매년 할로윈 www.acmicpc.net 문제 할로윈데이에 한신이네는 아부지가 사탕을 나눠주신다. 하지만 한신이의 형제들은 서로 사이가 좋지않아 서른이 넘어서도 사탕을 공정하게 나누어 주지 않으면 서로 싸움이 난다. 매년 할로윈데이때마다 아부지는 사탕을 자식들에게 최대한 많은 사탕을 나누어 주시기 원하며 자신에게는 몇개가 남게되는지에 알고 싶어 하신다. 이런 아부지를 도와서 형제간의 싸움을 막아보자... 2022. 9. 24.
C++ 토큰 (Tokens) 토큰이란 숫자나 연산자를 비롯해서 우리가 한 단위(unit)로 생각하는 무언가를 나타내는 문자열이다. 표현 방식은 (kind, value)이고 대부분의 텍스트 분석에서 기초가 된다. 종류 부동소수점 리터럴 : 3.14, 0.274e2, 42등 연산자 : +, -, *, /, % 괄호 : (, ) 토큰 구현 Token은 일종의 타입으로 변수를 정의하거나 값을 저장할 때 쓸 수 있으며, kind와 value 두 부분으로 이뤄진다. class 키워드는 '사용자 정의 타입'을 의미하며, 0개 이상의 멤버를 포함하는 타입을 정의한다. Token을 정의하고 Token의 객체를 통해 멤버 접근 표기법인 객체_이름.멤버_이름을 사용해 멤버에 접근한다. 이처럼 복사 초기화, 대입 등 Token은 복사도 가능하다 2022. 7. 21.
백준 10250 ACM 호텔 언어 : C++ 문제 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 풀이 회고 쉬운 문제임에도 불구하고 너무 쉽게 가려하다가 실수를 했다. 급할수록 돌아가라는 말도 있는것처럼 너무 빨리가려고 하면 오히려 실수를 유발할 수 있다. 앞으로는 돌다리도 두들겨 보고 건너는 습관을 들여야겠다. 2022. 7. 13.
백준 10828 문제 링크 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 이 문제는 stack을 구현하는 문제로 stack을 구현하기 위해 vector를 사용하였다. int 형 변수를 선언해 명령의 수를 입력 받았고 vector를 선언해 스택을 관리하였다. 회고 c언어 자료구조에서 배웠던 stack을 c++에서 vector를 사용해 구현해보니까 스택의 동작 원리를 안다면 누구나 쉽게 풀 수 있는 문제였다. 혹시나 하는 마음에 자료구조를 이제.. 2022. 7. 9.
카운팅 정렬(Counting Sort) 카운팅 정렬이란? 카운팅정렬은 값을 비교해서 정렬하는 방식이라기 보다는 값의 갯수를 세고 그 갯수에 따라서 위치를 성정하는 방식이다. 동작 원리는 다음과 같다. 3,2,2,3,1 와 같은 Array(배열)가 있을때 3 2 2 3 1 1. 각 데이터의 갯수를 모두 카운트 해준다. - 위의 경우 Count[3] = 2; Count[2] = 2; Count[1] = 1가 된다. 2. 누적합을 계산하는 방식으로 1부터 최대값까지 누적 합하여 계산을 해준다. - 예를 들면 Count[1] = Count[1] + Count[0] = 1 Count[2] = Count[2] + Count[1] = 2 + 1 = 3 Count[3] = Count[3] + Count[2] = 2 + 3 = 5 따라서 Count[1] = .. 2022. 7. 8.
백준 10989 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 구현 언어 : c++ 입력: 출력: 카운팅 정렬을 활용해서 정렬이 잘 된것을 확인 할 수 있다. 2022. 7. 8.
범위 지정 연산자 :: c++에서 ::는 범위 지정 연산자로서 함수나 변수명을 범위에 따라 구분하여 사용하고 싶을 때 사용된다. 여러 범위에서 사용된 식별자(identifier)를 식별하고 구분하는데 사용하는 연산자. 1. ::식별자 범위 지정 연산자를 변수의 이름 앞에 붙이면 전역변수로 사용하는 의미가 된다. 전역 변수에서 선언된 것에 직접 접근할 수 있다. 특히 같은 이름의 변수로 전역변수와 지역 변수가 선언 되있을 경우에 지역변수에 의해 무시된 전역변수에 접근할 수 있게해준다. 예를 들면 a라는 변수가 지역변수와 전역 변수로 있을 있을때 범위 지정 연산자를 통해 전역 변수에 접근할 수 있다. 2. 클래스명 :: 실별자 클래스에 있는 함수등을 사용할 때 사용하며 클래스에 접근 할때 범위 지정 연산자를 통해 접근한다. 3. .. 2022. 7. 4.
[MFC] CClientDC 윈도우에서 무언가를 그리기 위해서는 DC(Device context)를 획득해야 하는데, 여기서 DC란 출력에 필요한 모든 정보를 가지는 데이터 구조체이고, GDI 모듈에 의해 관리된다. 예를 들어 윈도우에 선을 그리는 상황을 가정할 때 좌표 값을 알고 있어도 선의 굵기등 부가적인 요인들이 있기때문에 DC를 이용하면 DC의 default값으로 부가적인 요인을 해결해주기 때문에 DC와 좌표만으로 선을 그릴수 있다. 윈도우에 캡션바를 제외한 영역을 Client Area(클라이언트 영역)이라고 한다. 클라이언트 영역에 그림을 그릴때 DC를 이용해 그림을 그리고 클라이언트에 그림을 그리기 위해 사용하는 DC를 ClientDC라고 한다. MFC에서 클래스 앞에 C를 붙이기에 CClientDC를 사용한다. 그림을 .. 2022. 7. 4.
백준 2455 https://www.acmicpc.net/problem/2455 2455번: 지능형 기차 최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. www.acmicpc.net 풀이 2022. 6. 23.
반응형