728x90

Programing Story's 260

[기초] C++ 알고리즘 : 선택 정렬 (Selection Sort)

가장 작은 (혹은 가장 큰) 원소를 선택해 앞으로 옮기는 방식입니다.시간 복잡도는 O(n^2)으로 비효율적입니다.  #include // 배열을 출력하는 함수void printArray(int arr[], int size) { for (int i = 0; i  이 코드는 선택 정렬 알고리즘을 구현하고, 주어진 배열을 정렬한 뒤 결과를 출력합니다.코드를 실행하면 정렬되지 않은 배열이 정렬된 상태로 출력됩니다. 정렬 전 배열: 64 25 12 22 11 정렬 후 배열: 11 12 22 25 64 이 출력은 배열이 선택 정렬을 통해 어떻게 오름차순으로 정렬되는지 보여줍니다.코드의 'selectionSort' 함수에서 배열의 각 위치를 순회하면서 그 위치 이후의 최솟값을 찾고,그 최솟값을 현재 위치로 이동..

Application/기초 2024.05.05

[기초] C++ 알고리즘 : 버블 정렬 (Bubble Sort)

인접한 두 원소를 비교하며 정렬해 나가는 방식입니다.간단하나 비효율적인 경우가 많습니다.시간 복잡도는 O(n^2)입니다.   아래 코드는 버블 정렬을 사용하여 정수 배열을 정렬합니다.먼저 정렬 전과 후의 배열을 출력하고, 'bubbleSort' 함수를 사용하여 배열을 정렬합니다.결과적으로 정렬된 배열을 출력합니다. #include void printArray(int arr[], int size) { for (int i = 0; i arr[j+1]) { // 두 원소의 위치를 바꿈 int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; ..

Application/기초 2024.05.04

[기초] 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

[Windows] Antimalware Service Executable CPU 부하

윈도우 사용 중 Antimalware Service Executable 프로세스가 CPU를 과도하게 사용하여 PC가 뻗는 증상이 발생. 실행 파일명은 MsMpEng.exe 해당 문제는 Windows Defender가 malware 감지를 위해 주기적으로 동작하는 스케줄러로 아래의 방식으로 부하율 사용을 줄일 수 있습니다  실행이나 cmd창에서 taskschd.msc 를 실행한다 (혹은 작업 스케줄러 검색)\Microsoft\Windows\Windows Defender 위치로 이동한다 위에 보이는 4가지 스케쥴러를 아래의 방식대로 설정한다 해당 스케줄 우클릭 후 속성 창 활성화  일반 탭에서 가장 높은 수준의 권한으로 실행 설정 해제  조건 탭에서 컴퓨터의 AC 전원이 켜져 있는 경우에만 작업 시작 설정 ..

OS/Windows 2024.04.29

[기초] 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
728x90
반응형