본문 바로가기
반응형

C++142

[C++ 마스터] Day 5: 조건문과 제어 구조 조건문 (Conditional Statements)조건문은 프로그램의 흐름을 제어하는 데 사용됩니다. C++에는 if, else if, else, switch 문이 있습니다. 1. if 문if 문은 주어진 조건이 참인지 확인하고, 참일 경우 해당 블록의 코드를 실행합니다.int a = 10;if (a > 5) { cout  2. if-else 문if 문 다음에 else 문을 사용하여 조건이 거짓일 때 실행할 코드를 지정할 수 있습니다.int a = 3;if (a > 5) { cout  3. else if 문여러 조건을 검사할 때 else if 문을 사용합니다.int a = 5;if (a > 5) { cout  4. 중첩 if 문조건문을 중첩하여 사용할 수 있습니다.int a = 8;if .. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 5: 범위 기반 for 루프와 초기화 리스트 범위 기반 for 루프 (Range-Based For Loop)범위 기반 for 루프는 C++11에서 도입된 기능으로, 컨테이너나 배열의 모든 요소를 쉽게 반복할 수 있도록 합니다. 이는 코드의 가독성을 높이고, 반복문을 간결하게 작성할 수 있게 해줍니다. 범위 기반 for 루프의 기본 구조범위 기반 for 루프의 기본 구조는 다음과 같습니다:for (declaration : range) { // 반복할 코드}declaration: 반복 변수 선언range: 반복할 범위 (컨테이너, 배열, initializer_list 등) 범위 기반 for 루프 예제다음 예제는 벡터의 요소를 출력하는 범위 기반 for 루프를 보여줍니다.#include #include int main() { std::vect.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 5: 메모리 관리 최적화 메모리 관리의 중요성효율적인 메모리 관리는 프로그램의 성능을 향상시키고 메모리 누수를 방지하여 안정성을 높이는 데 중요한 역할을 합니다. C++에서는 메모리 관리 기법을 통해 성능 최적화를 도모할 수 있습니다. 메모리 관리 최적화 기법1. 스마트 포인터 사용스마트 포인터는 메모리 관리를 자동화하여 메모리 누수를 방지합니다. C++ 표준 라이브러리는 다양한 스마트 포인터를 제공합니다.std::unique_ptr: 독점적인 소유권을 가진 스마트 포인터입니다.std::shared_ptr: 공유 소유권을 가진 스마트 포인터입니다.std::weak_ptr: std::shared_ptr의 순환 참조를 방지하는 약한 참조 스마트 포인터입니다. 예제 코드#include #include class MyClass {pub.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 5: 네트워크 데이터 직렬화 네트워크 데이터 직렬화네트워크 통신에서 데이터를 전송할 때, 데이터를 직렬화(Serialization)하여 전송하고, 수신 측에서는 이를 역직렬화(Deserialization)하여 원래의 데이터로 복원해야 합니다. 직렬화는 데이터를 일정한 형식으로 변환하여 네트워크를 통해 전송할 수 있게 합니다. 직렬화의 주요 개념직렬화와 역직렬화직렬화(Serialization): 객체나 데이터를 바이트 스트림으로 변환하는 과정입니다. 이 과정을 통해 데이터를 네트워크로 전송하거나 파일에 저장할 수 있습니다.역직렬화(Deserialization): 바이트 스트림을 원래의 객체나 데이터로 복원하는 과정입니다.직렬화 포맷JSON: 가볍고 읽기 쉬운 텍스트 기반의 데이터 교환 형식입니다. 대부분의 언어에서 지원되며, 웹 애플.. 2024. 8. 1.
[C++ 마스터] Day 6: 반복문 (for, while, do-while) 반복문 (Loops)반복문은 특정 조건이 만족되는 동안 코드 블록을 반복 실행하는 데 사용됩니다. C++에는 for, while, do-while 반복문이 있습니다. 1. for 문for 문은 초기화, 조건 검사, 증감식으로 구성된 반복문입니다. 반복 횟수가 정해져 있을 때 주로 사용합니다.for (int i = 0; i  위 코드에서 i는 0부터 시작하여 4까지 1씩 증가하며 반복됩니다. 2. while 문while 문은 조건이 참인 동안 코드를 반복 실행합니다. 조건이 거짓이 되면 반복이 종료됩니다.int i = 0;while (i  위 코드에서 i는 0부터 시작하여 5 미만일 때까지 1씩 증가하며 반복됩니다. 3. do-while 문do-while 문은 최소 한 번 실행한 후 조건이 참인 동안 반복.. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 6: constexpr과 상수 표현식 C++11부터 도입된 constexpr 키워드는 컴파일 시간에 평가될 수 있는 상수 표현식을 정의할 수 있게 합니다. 이는 프로그램의 성능과 안정성을 높이는 데 유용합니다. 오늘은 constexpr의 사용법과 상수 표현식에 대해 자세히 학습하겠습니다.constexpr (상수 표현식)constexpr의 기본 사용법constexpr 키워드는 변수, 함수, 생성자 등에 사용할 수 있습니다. constexpr로 선언된 변수는 반드시 컴파일 시간에 값을 결정할 수 있어야 합니다. 기본 예제#include constexpr int square(int x) { return x * x;}int main() { constexpr int result = square(5); std::cout  이 예제에서 .. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 6: 불필요한 복사 방지 (copy elision) 불필요한 복사란?불필요한 복사는 객체를 복사하는 과정에서 발생하는 오버헤드입니다. 이는 성능 저하와 메모리 사용 증가를 초래할 수 있습니다. C++에서는 이러한 불필요한 복사를 방지하기 위한 다양한 기법을 제공합니다. 불필요한 복사 방지 기법1. RVO(Return Value Optimization)와 NRVO(Named Return Value Optimization)RVO와 NRVO는 컴파일러가 반환값을 최적화하여 불필요한 복사를 방지하는 기법입니다. 예제 코드#include class MyClass {public: MyClass() { std::cout  위 코드는 MyClass 객체를 반환할 때 RVO와 NRVO가 적용되어 불필요한 복사를 방지합니다. 2. 이동 시멘틱스 (Move.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 6: 네트워크 프로토콜 기초 네트워크 프로토콜 기초네트워크 프로토콜은 네트워크 상에서 데이터를 주고받는 규칙을 정의한 것입니다. 프로토콜은 데이터의 형식, 전송 방식, 오류 처리 등을 규정합니다. 네트워크 통신의 대부분은 여러 프로토콜의 조합으로 이루어집니다.OSI 7계층 모델OSI(Open Systems Interconnection) 모델은 네트워크 통신을 7개의 계층으로 나눈 모델입니다. 각 계층은 특정한 기능을 담당하며, 서로 독립적으로 동작합니다.물리 계층 (Physical Layer): 물리적인 매체를 통해 데이터를 전송합니다. (예: 케이블, 전파)데이터 링크 계층 (Data Link Layer): 인접한 네트워크 노드 간의 데이터 전송을 담당합니다. (예: Ethernet, Wi-Fi)네트워크 계층 (Network La.. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트] Day 3: SFINAE와 개념 SFINAE(Substitution Failure Is Not An Error)는 템플릿 메타프로그래밍에서 중요한 개념으로, 템플릿 인자 치환 실패가 오류를 일으키지 않도록 하는 원리입니다. 이를 통해 조건부로 템플릿을 선택할 수 있습니다. 오늘은 SFINAE와 함께 개념(Concepts)에 대해 학습하겠습니다.SFINAESFINAE란?SFINAE는 "Substitution Failure Is Not An Error"의 약자로, 템플릿 인자 치환이 실패하더라도 이를 오류로 간주하지 않고, 다른 템플릿이 선택될 수 있도록 합니다. 이를 통해 템플릿 특수화나 함수 오버로딩 시 특정 조건에 따라 선택할 수 있습니다. SFINAE의 기본 사용법다음은 SFINAE를 사용하여 특정 타입에 대해서만 템플릿을 활성화하.. 2024. 8. 1.
반응형