C++의 친구 함수와 모듈 중심 설계
다음과 같은 선언은 표준 라이브러리에 포함된 것이 아니라, 단지 개념을 설명하기 위해 사용한 예시입니다:
class Matrix;
class MatrixOperator;
이 두 줄은 전방선언(Forward Declaration)을 나타냅니다. 즉, 해당 타입이 존재한다는 것을 알리지만, 정의는 나중에 하겠다는 의미입니다.
예를 들어, 다음과 같이 구성할 수 있습니다:
class Matrix; // 전방선언
cl ...
6월 26일 21:42에 게시됨
CANdevStudio 프로젝트 시작하기
CANdevStudio 프로젝트 튜토리얼
1. 프로젝트 디렉토리 구조
CANdevStudio는 CAN 버스 시뮬레이션을 위한 개발 도구입니다. 프로젝트의 디렉토리 구조는 다음과 같이 구성되어 있습니다:
CANdevStudio/
├── CMakeLists.txt
├── README.md
├── src/
│ ├── main.cpp
│ ├── CanBusAdapter.cpp
│ ├── CanBusAdapter.h
│ ├── ...
├── include/
│ ├── CanBusAdapter ...
6월 26일 18:54에 게시됨
C++ 추상 클래스와 템플릿을 활용한 객체지향 프로그래밍
추상 기반 클래스 구현
출판물 계층 구조 설계:
// 추상 베이스 클래스
class Media {
public:
Media(const std::string &title = "") : title(title) {}
virtual ~Media() = default;
virtual void release() const = 0;
virtual void consume() const = 0;
protected:
std::string title;
};
// 도서 클래스
class Novel : public Media {
public: ...
6월 26일 17:37에 게시됨
Codeforces Round #879 Div.2 참가 후기 및 문제 풀이
A번 문제: 부호 조정을 통한 곱의 양수화
배열에 포함된 정수들 중 -1과 1의 개수를 세어, 전체 원소의 곱이 양수가 되도록 최소 연산 횟수를 구하는 문제이다. 핵심은 음수(-1)의 개수가 홀수일 경우 하나를 제거하고 1로 변환해야 한다는 점이다. 이후 1의 개수가 -1의 개수 이상이 될 때까지 두 개씩 변환해 나간다. 이때 매번 두 개의 -1을 1로 바꾸므로 연산 횟수는 2 ...
6월 25일 21:59에 게시됨
openMVG 파이프라인에서 C++ 코드 디버깅을 위한 명령줄 인수 시뮬레이션 방법
Python 스크립트를 통해 실행되는 openMVG C++ 도구 디버그하기
openMVG의 tutorial_demo.py, SfM_SequentialPipeline.py, 또는 SfM_GlobalPipeline.py와 같은 파이썬 파이프라인을 사용할 때, 내부적으로 호출되는 C++ 바이너리(예: openMVG_main_SfMInit_ImageListing)의 동작을 디버깅해야 할 경우가 있다. 이때 파이썬 코드는 단지 외부 실행 파일을 호출할 뿐이며, 실 ...
6월 25일 19:56에 게시됨
C++ BFS 알고리즘을 활용한 FloodFill 문제 해결
FloodFill 유형 문제 분석
1. 벽과 문 거리 계산
문제 설명:
2D 그리드에서 방 상태를 나타내는 rooms 배열이 주어집니다. 각 셀은 벽(-1), 문(0), 빈 방(2³¹-1) 중 하나입니다. 모든 빈 방에 대해 가장 가까운 문까지의 거리를 계산하세요.
제약 조건:
m == rooms.length
n == rooms[i].length
1 ≤ m, n ≤ 250
해결 전략:
모든 문의 위치를 큐에 초기 삽입합니다. BFS를 ...
6월 25일 00:44에 게시됨
C++에서의 상속 메커니즘과 활용
1. 상속의 개념
상속(inheritance)은 객체 지향 프로그래밍에서 코드 재사용을 가능하게 하는 가장 중요한 메커니즘입니다. 기존 클래스의 특성을 유지하면서 확장하여 새로운 기능을 추가할 수 있게 해주며, 이렇게 생성된 새로운 클래스를 파생 클래스(derived class)라고 합니다. 상속은 객체 지향 프로그래밍의 계층 구조를 나타내며, 단순한 개념에서 복잡한 개념으로 ...
6월 25일 00:37에 게시됨
클래스와 객체: 초기화 리스트, 타입 변환, 정적 멤버 및 기타
1. 초기화 리스트
C++에서 클래스의 멤버 변수를 초기화할 때는 함수 본문 내에서 할당하는 대신 초기화 리스트를 사용할 수 있습니다. 초기화 리스트는 콜론(:)으로 시작하며, 각 멤버 변수는 괄호 안에 초기값이나 표현식을 포함합니다.
각 멤버 변수는 초기화 리스트에서 한 번만 나타나야 합니다.
참조 멤버 변수, const 멤버 변수, 기본 생성자가 없는 클래스 타입 ...
6월 24일 21:57에 게시됨
C++에서의 STL 알고리즘 활용과 핵심 패턴
비수정형 시퀀스 알고리즘
이러한 알고리즘은 컨테이너 내 요소를 변경하지 않고 조작합니다. 주로 탐색, 카운팅, 조건 검사에 사용됩니다.
요소 탐색: find 계열 함수
std::find: 지정된 값과 일치하는 첫 번째 요소를 반환합니다.
std::find_if: 조건을 만족하는 첫 번째 요소를 찾습니다.
std::find_end: 특정 하위 시퀀스가 마지막으로 나타나는 위치를 반환합 ...
6월 24일 20:32에 게시됨
C++ 표준 라이브러리(STL) 알고리즘 활용 가이드
1. 비수정(Non-modifying) 시퀀스 알고리즘
이 범주의 알고리즘은 대상 컨테이너의 요소 값을 변경하지 않으면서 정보를 검색합니다.
1.1 요소 찾기: find, find_if, find_end
find(begin, end, value): 주어진 범위에서 특정 값과 일치하는 첫 번째 요소를 찾아 해당 위치의 이터레이터를 반환합니다. 찾지 못하면 end 이터레이터를 반환합니다.
find_if(begin, ...
6월 24일 17:29에 게시됨