728x90

Application/기초 46

[기초] C++ 반복자 (Iterator)

C++에서 다양한 유형의 이터레이터(Input, Output, Forward, Bidirectional, Random Access)를 각각 설명하고예제를 제공하겠습니다.이 예제들은 이터레이터의 기능적 차이를 보여주고, 어떻게 각각의 이터레이터를 사용할 수 있는지를 설명합니다.  Input Iterator 'istream_iterator'는 입력 이터레이터의 일반적인 예입니다.표준 입력에서 정수 값을 읽습니다. #include #include int main() { std::cout it(std::cin); std::istream_iterator end; while (it != end) { std::cout   Output Iterator 'ostream_iterator'는 ..

Application/기초 2024.05.03

[기초] C++ 컨테이너 (Containers)

C++은 다양한 유형의 컨테이너를 제공하여 데이터를 구조화하고 관리하는 강력한 도구를 제공합니다.이러한 컨테이너는 데이터를 저장하고 조작하는 다양한 방법을 제공하여프로그래머가 작업을 효율적으로 수행할 수 있도록 도와줍니다.  시퀀스 컨테이너 (Sequence Containers) 시퀀스 컨테이너는 데이터를 선형으로 저장하는 컨테이너로, 데이터의 삽입과 삭제가 자유롭습니다.주요 시퀀스 컨테이너에는 다음이 있습니다 vector#include #include int main() { std::vector vec; // int형 데이터를 저장하는 vector 선언 // 데이터 삽입 vec.push_back(10); vec.push_back(20); vec.push_back(30); ..

Application/기초 2024.05.02

[기초] C++ this 포인터 : 객체의 자기 참조

객체지향 프로그래밍에서 객체는 데이터와 해당 데이터를 조작하는 함수들을 함께 묶은 것입니다.C++에서 this 포인터는 이러한 객체 내에서 현재 객체를 가리키는 특별한 포인터입니다.이 글에서는 this 포인터의 역할과 사용법에 대해 알아보겠습니다.  this 포인터란 this 포인터는 클래스의 멤버 함수 내에서 사용되는 포인터로,해당 함수를 호출한 객체의 주소를 가리킵니다.즉, 현재 실행 중인 객체에 대한 포인터 역할을 합니다.this 포인터를 사용하여 객체의 멤버 변수와 멤버 함수에 접근할 수 있습니다. 사용법 this 포인터는 클래스의 멤버 함수 내에서 암시적으로 사용됩니다.멤버 함수가 호출될 때마다 해당 함수를 호출한 객체의 주소가 this 포인터에 자동으로 전달됩니다.이를 통해 멤버 함수 내에서 ..

Application/기초 2024.05.01

[기초] C++ 동기화 기법 (Mutex와 Semaphore)

C++에서 멀티스레드 프로그래밍을 할 때, 동기화는 중요한 주제 중 하나입니다.여러 스레드가 공유 자원에 안전하게 접근할 수 있도록 하는 것이 동기화의 목적입니다.이를 위해 C++에서는 주로 Mutex와 Semaphore라는 동기화 기법을 사용합니다.이번 포스팅에서는 이 두 가지 기법에 대해 자세히 알아보겠습니다.  Mutex (상호 배제) Mutex는 Mutual Exclusion(상호 배제)의 줄임말로,한 번에 한 스레드만 공유 자원에 접근할 수 있도록 하는 동기화 기법입니다.일종의 잠금장치로, 어떤 스레드가 공유 자원에 접근할 때 다른 스레드들은 대기 상태로 들어갑니다. #include #include #include std::mutex mtx;void critical_section() { m..

Application/기초 2024.04.30

[기초] C++ 멀티스레딩 (Thread)

스레드는 프로세스 내에서 실행되는 실행 단위입니다.각 스레드는 동일한 데이터 영역을 공유하면서도 독립적으로 명령을 수행할 수 있습니다.이를 통해 병렬 처리가 가능해지며, 멀티코어 프로세서의 이점을 살릴 수 있습니다.  C++에서의 스레드 사용 C++11부터는 '' 헤더를 통해 기본적인 스레드 지원이 포함되었습니다.'' 라이브러리를 사용하면 POSIX 스레드(Pthreads)또는 Windows 스레드와 같은 저수준 스레드 관리 기능을 직접 다루지 않고도스레드를 손쉽게 사용할 수 있습니다. 예제 코드 #include #include // 스레드에서 실행될 함수 정의void threadFunction(int n) { for (int i = 0; i  이 코드에서는 'threadFunction'이라는 함수..

Application/기초 2024.04.29

[기초] C++ 템플릿 (Templates)

C++ 템플릿은 제네릭 프로그래밍을 지원하기 위한 강력한 기능 중 하나입니다.템플릿을 사용하면 함수나 클래스를 일반화하여 여러 자료형에서 동작하도록 만들 수 있습니다.이를 통해 코드의 재사용성을 높이고 유연성을 확보할 수 있습니다.  함수 템플릿(Function Templates) 함수 템플릿은 특정한 자료형에 의존하지 않고, 여러 자료형에서 동작할 수 있는 함수를 생성합니다.다음은 함수 템플릿의 간단한 예제입니다. templateT add(T a, T b) { return a + b;} 위의 코드에서 'add()' 함수는 템플릿으로 선언되었으며, 자료형 'T'를 사용하여 두 개의 매개변수를 더합니다. int main() { std::cout  위의 예제에서 'add()' 함수가 'int'와 ..

Application/기초 2024.04.28

[기초] C++ 가변 파라미터

가변 파라미터는 함수가 정해지지 않은 수의 인자를 받을 수 있도록 해주는 기능입니다.C++에서는 주로 두 가지 방법을 사용하여 가변 파라미터를 구현할 수 있습니다.C 스타일의 'stdarg.h' 헤더를 사용하는 방법C++11 이후에 도입된 'initializer_list'와 가변 템플릿을 활용하는 방법이 글에서는 이 두 방법을 소개하고 각각의 장단점을 비교해 보겠습니다.  C 스타일 가변 파라미터 ('stdarg.h') 가변 파라미터를 처리하는 전통적인 C 방식은 'stdarg.h' 헤더 파일을 포함하여'va_list', 'va_start', 'va_arg', 'va_end' 매크로를 사용하는 것입니다.이 방법은 C와의 호환성이 필요한 경우나 매우 낮은 수준에서의 컨트롤이 필요할 때 유용합니다. 예제 코..

Application/기초 2024.04.27

[기초] C++ 디폴트 파라미터 (Default Parameters)

C++ 프로그래밍에서 함수를 정의할 때 특정 매개변수에 기본값을 설정할 수 있습니다.이러한 기본값을 가진 매개변수를 '디폴트 파라미터'라고 합니다.디폴트 파라미터를 사용하면 함수 호출 시 일부 매개변수를 생략할 수 있어 코드의 유연성을 높이고,중복을 줄일 수 있습니다.  기본 개념 함수를 정의할 때, 매개변수 리스트 중 하나 이상에 초기값을 제공하여,해당 함수가 호출될 때 해당 매개변수를 생략 가능하게 만듭니다.이렇게 하면, 함수를 더 유연하게 사용할 수 있습니다. 규칙 디폴트 값 설정 : 함수 선언 시, 매개변수의 기본 값을 할당할 수 있습니다.오른쪽에서 왼쪽으로 : 디폴트 파라미터는 함수 매개변수 리스트에서 오른쪽부터 시작해야 합니다.즉, 어떤 매개변수에 기본값을 주기 시작하면, 그 오른쪽에 있는 모..

Application/기초 2024.04.26

[기초] C++ 메모리 패킹 (pragma pack)

메모리 패킹은 데이터 구조체의 각 멤버가 메모리 상에서 최소한의 공간만을 차지하도록 강제하는 기법입니다.C++에서는 '#pragma pack(1)' 지시어를 사용하여 구조체, 클래스, 또는 유니온의 패딩을 최소화할 수 있습니다.이 포스팅에서는 '#pragma pack(1)'의 사용법과 이점, 그리고 주의해야 할 사항을 설명합니다.  '#pragma pack(1)'이란? '#pragma pack(n)'은 구조체나 유니온의 멤버 간의 패딩을 'n' 바이트로 설정합니다.'#pragma pack(1)'은 패딩을 1바이트로 설정하여 컴파일러가 어떠한 패딩도 추가하지 않도록 강제합니다.이를 통해 데이터 구조의 크기를 최소화할 수 있습니다. '#pragma pack(1)' 사용법 '#pragma pack' 지시어는 ..

Application/기초 2024.04.25

[기초] C++ 유니언과 비트필드 (UNION & BitField)

컴퓨터 프로그래밍에서 메모리는 매우 중요한 자원입니다.특히 임베디드 시스템이나 메모리 사용에 제약이 있는 환경에서는 각 바이트를 효율적으로 사용하는 것이 필수적입니다.C++에서는 'union'과 'struct'를 활용하여 비트 단위로 메모리를 제어할 수 있는 방법을 제공하며,이를 비트 필드라고 합니다.이번 포스팅에서는 C++의 비트 필드 사용법과 이를 활용한 예시를 살펴보겠습니다. 비트 필드 정의 비트 필드는 구조체 내에서 각 멤버 변수가 차지하는 비트 수를 명시적으로 지정하는 기법입니다.이를 통해 변수에 할당된 메모리 크기를 정밀하게 조절할 수 있어 메모리 사용을 최적화할 수 있습니다. 비트 필드 사용법 비트 필드는 보통 'struct' 또는 'union' 내부에서 사용됩니..

Application/기초 2024.04.24
728x90