기록은 기억을 이기고 시간보다 오래 남는다.
반응형

프로그래밍 언어/c++ 22

[c++] Future 병렬 처리 방법

Future은 직렬 방식의 단순한 처리 방법에서 병렬로 동시에 처리 할 수 있도록 하는 기능이다.C++11에서 추가된 std::future은 비동기 계산을 가능하게 해주는 기능입니다.이를 통해 현재 스레드에서 계산이 끝나지 않은 작업을 다른 스레드에서 계속 수행할 수 있습니다.결론)mutax, condition_variable까지 가지 않고 단순한 애들을 처리할 수 있는 (일회성으로 일어나는)\ future 객체를 만드는 방법은 여러가지 방법이 있음 특히나 , 한 번 발생하는 이벤트에 유용하다. 1)async = 원하는 함수를 비동기적으로 실행 2)promise =  결과무를 promise를 통해 future로 받아줌 3)packaged_task = 원하는 함수의 실행 결과를 packaged_task를 ..

[c++] fetch_add() 함수

fetch_add()는 원자적(atomic) 연산 중 하나입니다. C++11에서 추가된 C++ 표준 라이브러리의 std::atomic 클래스의 멤버 함수 중 하나로, 특정 변수에 대한 원자적인 덧셈 연산을 수행합니다. fetch_add()는 특정 변수의 값을 가져온 후에 해당 변수에 인자로 전달된 값을 더하고, 그 결과를 반환합니다.  이 과정에서 해당 변수는 다른 스레드에 의해 변경되지 않는 원자적인 연산이 보장됩니다. 예를 들어, 다음 코드는 x 변수에 대해 fetch_add() 함수를 사용하여 1을 더하는 코드입니다. 위 코드는 x 변수의 값을 1 증가시키고, 그 결과를 result 변수에 저장합니다.fetch_add() 함수는 원자적 연산이므로 다른 스레드가 x 변수를 변경하더라도결과에는 영향을 ..

[C/C++] Stack in c++ (기본 사용법, 예제)

안녕하세요 준준 입니다. 오늘은 C++ STL 중 하나인Stack(스택)에 대해 알아보도록 하겠습니다.What is Stack?스택의 사전적 의미로는 '쌓다', '더미'입니다. 상자에 물건을 쌓아 올리듯 데이터를 쌓는 자료 구조라고 할 수 있습니다. 스택은 대표적인 LIFO (Last In First Out) 구조입니다.따라서 제일 마지막에 넣은 데이터가 가장 먼저 빠져나가는 것을 알 수 있습니다.쉬운 예시로 쌓여 있는 그릇을 생각하시면 쉽습니다. 상식적으로 그릇은 쌓을 때 맨 위에서부터 쌓고 꺼낼 때는 맨 위에부터 꺼내곤 합니다.따라서 가장 최근에 넣은 그릇을 가장 빨리 쓰게 됩니다.이해가 조금 되셨을 까요?Stack의 특징1. 먼저 들어간 자료가 나중에 나오는 구조2. 시스템 해킹에서 버퍼오버플로우 ..

[c++] 대문자, 소문자 구분 하는 방법 (islower, isupper)

안녕하세요. 준준입니다. 오늘은 c++에서 소문자 대문자 구분하는 방법에 대해 알아보도록 하겠습니다. c++에서는 islower, isupper 함수를 사용할 수 있습니다. 헤드파일 먼저 해당 함수를 사용하기 위해서는 #include 을 선언해 주어야 합니다. isupper() isupper() 함수는 인자로 전달된 문자가 대문자인지 여부를 확인합니다. 만약 대문자이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. islower() islower() 함수는 인자로 전달된 문자가 소문자인지 여부를 확인합니다. 만약 소문자이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 더보기 대문자인지 소문자인지 확인을 했으면 바꿀 수도 있어야겠죠? 아래 함수들은 각각 대문자를 소문자로 소문..

[C++]size_t 와 string::npos란 무엇일까?

안녕하세요 준준입니다. 이번 게시글에서는 size_t와 string::npos에 대해서 알아보도록 하겠습니다. size_t란? size_t는 C++ 표준 라이브러리에서 정의된 데이터 타입으로, 부호 없는 정수형(unsigned integer)으로 사용됩니다. size_t는 보통 메모리 할당, 배열 인덱스, 문자열 길이 등을 나타내는데 사용됩니다. size_t는 각각의 플랫폼에서 동일한 크기를 가지도록 보장되어 있으며, 대부분의 컴파일러에서는 32비트에서는 4바이트, 64비트에서는 8바이트로 정의되어 있습니다. string::npos란? string::npos는 C++ 표준 라이브러리에서 제공하는 상수로, 문자열에서 해당 문자열이 존재하지 않는 경우를 나타내는 값입니다. 예를 들어, string::find..

[C++] pow, sqrt 함수란?(루트함수, 제곱, 제곱근)

안녕하세요 준준 입니다. 이번 개시글에서는 pow() 함수와 sqrt() 함수에 대해 알아보도록 합시다. 간단하게 제곱과 제곱근과 관련이 되어 있습니다. 우선 이 함수들를 사용하기 위해서는 #include 헤더 파일을 선언해 주어야 합니다. c++에서의 pow 함수 원형은 아래와 같습니다. 1. double pow(double base, double n) 2. float pow(float base, float n) 3. long double pow(long double base, long double n) -pow의 기능 base가 되는 함수를 n만큽 제곱을 해줍니다. -pow 사용법: 12에 2제곱을 구한다면 -> pow(12,2); 5.5에 9.9제곱을 구현다면 ->pow(5.5,9.9); 다음으로 ..

쓰레드 [thread/THREAD]

쓰레드는 과거에는 표준화가 되어 있지 않았지만현제는 모던 c++에 포함이 되어 있어 #include 헤더를 선언해주면리눅스에서 따로 작업할 필요가 없이 사용가능 하다. thread 객체를 만드는 방법은 아래와 같다.std::tread t; 이 함수들은 C++11에서 제공되는 스레드 클래스의 멤버 함수들이다.hardware_concurrency()함수는 시스템에서 동시에 실행할 수 있는 최대 스레드 수를 반환get_id()스레드 객체의 고유 식별자를 반환detach()스레드 객체를 따로 분리시켜서 실행. 분리된 스레드는 부모 스레드와 독립적으로 실행joinable()함수는 스레드 객체가 join() 함수를 호출할 수 있는지 여부를 반환join()스레드가 종료될 때까지 기다린 후 스레드의 종료를 기다립니다.

[c/c++] 일, 월, 년을 원하는 만큼 더하는 프로그램

문제 1 여러분은 아래와 같은 Date 클래스를 디자인 하려고 합니다. SetDate 는 말그대로 Date 함수 내부를 초기화 하는 것이고 AddDay, AddMonth, AddYear 는 일, 월, 년을 원하는 만큼 더하게 됩니다. 한 가지 주의할 점은 만일 2012 년 2 월 28 일에 3 일을 더하면 2012 년 2 월 31 일이 되는 것이 아니라 2012 년 3 월 2 일이 되겠지요? 코드 #include using namespace std; class Date { private: int year_; int month_; // 1 부터 12 까지. int day_; // 1 부터 31 까지. public: void SetDate(int year, int month, int date) { year_..

[c/c+]참조자_레퍼런스(reference)

1). 레퍼런스는 반드시 누구를 참조하는지 명확하게 표시하여야한다. 2.) 레퍼런스는 상수값을 직접 받아오지 못한다. ex1). 이 경우에는 에러가 난다. 이유는 참조자는 상수값 즉 리터럴(literal) 받지 못한다. 따라서 추가하거나 더 변경할 부분은 빨간색으로 표시해 뒤었다. //case 1 //case 2 #include #include using namespace std; using namespace std; int main() int main() { { const int &ref=10; int ref1=10; cout

[c/c++] 다양한 메뉴에 따라 출력되는 사각형/HDC hdc =GetWindowDC(GetForgroundWindow());

#pragma once class CPostion { protected: int m_x0; int m_y0; int m_x1; int m_y1; public: void setPosition(int x0, int y0, int x1, int y1); }; #include"position.h" void CPostion::setPosition(int x0, int y0, int x1, int y1) { m_x0=x0; m_y0=y0; m_x1=x1; m_y1=y1; } #pragma once #include"position.h" class CRectangle : public CPostion { private: int m_xpos; int m_ypos; int m_size; public: void setMpos..

반응형