본문 바로가기
반응형

C++142

[C++ 마스터]Day 25: 스마트 포인터 (unique_ptr, shared_ptr) 스마트 포인터 (Smart Pointers)스마트 포인터는 메모리 관리 문제를 해결하기 위해 C++11에서 도입된 기능입니다. 스마트 포인터는 자동으로 메모리를 관리하여, 메모리 누수와 같은 문제를 줄여줍니다. C++ 표준 라이브러리는 unique_ptr, shared_ptr, weak_ptr라는 세 가지 주요 스마트 포인터를 제공합니다. unique_ptrunique_ptr는 소유권이 단 하나의 객체에만 있는 스마트 포인터입니다. 한 번에 한 객체만 소유권을 가질 수 있으며, 소유권을 다른 객체로 이동할 수 있습니다. unique_ptr는 가장 가볍고, 소유권 이전을 명확하게 할 수 있는 장점이 있습니다. 1. unique_ptr 기본 사용법#include #include using namespace .. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 25: CMake를 이용한 빌드 시스템 관리 CMake 소개CMake는 오픈 소스, 크로스 플랫폼 빌드 시스템입니다. 프로젝트의 빌드 과정을 자동화하고, 다양한 플랫폼과 컴파일러에서 일관된 빌드를 제공합니다. 오늘은 CMake를 사용하여 빌드 시스템을 관리하는 방법에 대해 학습하겠습니다. CMake 기본 사용법1. CMakeLists.txt 파일CMake 프로젝트는 CMakeLists.txt 파일을 사용하여 구성됩니다. 이 파일에는 프로젝트 설정, 소스 파일 목록, 빌드 옵션 등이 포함됩니다. 간단한 예제cmake_minimum_required(VERSION 3.10)project(MyProject)set(CMAKE_CXX_STANDARD 17)add_executable(my_executable main.cpp) 이 예제는 C++17 표준을 사용하.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 25: 프로젝트: 고성능 매트릭스 라이브러리 개발 (2) 프로젝트 목표이 단계에서는 매트릭스 라이브러리의 성능을 더욱 향상시키기 위해 최적화 기법을 적용하고, 추가적인 기능을 구현합니다. 특히, 다음과 같은 부분을 다룹니다:루프 언롤링 및 벡터화: 성능을 향상시키기 위한 루프 최적화.캐시 친화적 접근: 메모리 접근 패턴을 최적화하여 캐시 효율성을 높입니다.추가 기능 구현: 행렬의 역행렬 및 행렬식 계산 기능 추가. Step 1: 루프 언롤링 및 벡터화행렬 곱셈에서 루프 언롤링을 적용하여 성능을 향상시킵니다. 루프 언롤링은 반복문 내의 작업을 반복적으로 실행하지 않고, 여러 번의 작업을 한 번에 수행하도록 변경하는 기법입니다. Matrix.cpp: 루프 언롤링 적용#include "Matrix.h"Matrix operator*(const Matrix& lhs, .. 2024. 8. 1.
[C++ 마스터] Day 22: 파일 입출력 파일 입출력 (File I/O)파일 입출력은 프로그램이 파일과 데이터를 주고받는 기능을 말합니다. C++에서는 파일 입출력을 위해 헤더를 사용합니다. 주요 클래스에는 ifstream (입력 파일 스트림), ofstream (출력 파일 스트림), fstream (입출력 파일 스트림)이 있습니다. 1. 파일에 데이터 쓰기 (Writing to a File)파일에 데이터를 쓰기 위해 ofstream 클래스를 사용합니다.#include #include using namespace std;int main() { ofstream outFile("example.txt"); // 파일 열기 if (!outFile) { cout  2. 파일에서 데이터 읽기 (Reading from a File.. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 22: Boost 라이브러리 소개 및 활용 Boost 라이브러리Boost는 C++ 표준 라이브러리를 확장하는 고성능 라이브러리 모음입니다. 다양한 유틸리티와 기능을 제공하여 C++ 개발을 더욱 편리하게 해줍니다. 오늘은 Boost 라이브러리의 기본적인 사용법과 주요 컴포넌트를 살펴보겠습니다. Boost 라이브러리 설치Boost 라이브러리를 설치하려면 다음 명령어를 사용합니다.sudo apt-get install libboost-all-dev Boost 라이브러리 사용Boost 라이브러리를 사용하려면 프로젝트에 포함시켜야 합니다. 다음 예제는 CMake를 사용하여 Boost 라이브러리를 포함하는 방법을 보여줍니다. CMakeLists.txtcmake_minimum_required(VERSION 3.10)project(BoostExample)set(.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 22: 실전 최적화 사례 연구 (1) 실전 최적화 사례 연구최적화는 실제 프로젝트에서 성능을 극대화하는 중요한 과정입니다. 이번 단계에서는 실전에서 적용할 수 있는 최적화 사례를 연구하여, 코드의 성능을 개선하는 방법을 배우겠습니다. 사례 1: 루프 최적화루프는 많은 연산이 집중되는 부분입니다. 루프 최적화를 통해 성능을 크게 향상시킬 수 있습니다. 예를 들어, 루프 언롤링(loop unrolling)과 루프 인터체인징(loop interchange)을 사용할 수 있습니다. 예제 코드: 루프 최적화 전#include #include void sumRows(const std::vector>& matrix, std::vector& result) { int n = matrix.size(); for (int i = 0; i > matri.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 22: 프로젝트 소개 및 설계 (실시간 채팅 애플리케이션) 실시간 채팅 애플리케이션이번 프로젝트에서는 실시간 채팅 애플리케이션을 설계하고 구현할 것입니다. 이 애플리케이션은 클라이언트와 서버가 WebSocket을 통해 실시간으로 메시지를 주고받을 수 있게 합니다. 프로젝트는 클라이언트와 서버 두 부분으로 나뉘며, 사용자는 여러 클라이언트에서 메시지를 전송하고 수신할 수 있습니다.프로젝트 설계기능 요구사항사용자 연결 관리: 여러 사용자가 동시에 서버에 연결할 수 있어야 합니다.메시지 전송: 사용자가 메시지를 보내고, 서버는 이를 다른 모든 사용자에게 전달해야 합니다.사용자 식별: 각 사용자는 고유한 사용자 이름으로 식별됩니다.연결 유지: 서버는 사용자 연결 상태를 유지하고 관리해야 합니다.오류 처리: 서버와 클라이언트 모두에서 오류를 처리해야 합니다.시스템 구성 .. 2024. 8. 1.
[C++ 마스터] Day 23: 프로젝트 - 간단한 콘솔 게임 만들기 (1) 이번 프로젝트에서는 간단한 콘솔 게임을 만들어보겠습니다. 게임의 목적은 플레이어가 미로를 탈출하는 것입니다. 플레이어는 미로를 탐험하며, 'W', 'A', 'S', 'D' 키를 사용하여 상하좌우로 이동할 수 있습니다. 목표는 미로의 출구에 도달하는 것입니다. 프로젝트 계획미로 생성: 2차원 배열을 사용하여 미로를 표현합니다.플레이어 이동: 플레이어의 위치를 추적하고, 키 입력에 따라 이동합니다.게임 루프: 게임이 진행되는 동안 반복적으로 상태를 업데이트하고 화면을 출력합니다.게임 종료: 플레이어가 출구에 도달하면 게임이 종료됩니다. 1. 미로 생성먼저, 미로를 나타내는 2차원 배열을 정의하고 초기화합니다. 'P'는 플레이어, 'E'는 출구, ' '는 길, '#'는 벽을 나타냅니다.#include #inc.. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 23: Qt를 이용한 GUI 프로그래밍 Qt 프레임워크 소개Qt는 크로스 플랫폼 애플리케이션 개발을 위한 강력한 C++ 프레임워크입니다. 주로 GUI 애플리케이션 개발에 사용되지만, 네트워킹, 파일 입출력, 쓰레딩 등 다양한 기능을 제공합니다. Qt 설치Qt를 설치하려면 Qt의 공식 웹사이트에서 다운로드합니다.Qt 다운로드 설치 후 qmake, Qt Creator와 같은 도구를 사용할 수 있습니다. Qt 프로젝트 생성Qt Creator를 사용하여 새로운 Qt 프로젝트를 생성합니다.Qt Creator 실행File > New File or Project > Application > Qt Widgets Application 선택프로젝트 이름과 위치 설정Kit 선택 (기본값 사용)Finish 클릭하여 프로젝트 생성 완료 Qt 애플리케이션 구조Qt W.. 2024. 8. 1.
반응형