본문 바로가기

Information Technology/C++

(51)
[C++] std::forward 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요;) #include #include #include using namespace std; struct MyStruct {}; void func(MyStruct& s) { cout
[C++] 벡터 내적과 멀티 쓰레딩 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) 1. std::inner_product 함수와 가장 기본적인 멀티 쓰레딩 설정의 내적 실행 비교 #include #include #include #include #include #include #include #include #include #include // dot-product #include using namespace std; mutex mtx; void dotProductNative(const vector& v0, const vector& v1, const unsigned i_start, const unsigned i_end, unsigned long long& sum) { for (unsigned i = i_st..
[C++] 작업 기반 비동기 프로그래밍 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) #include #include #include using namespace std; int main() { // multi-threading { int result; std::thread t([&] {result = 1 + 2; });// thread를 생성해서 관리 t.join(); cout
[C++] 레이스 컨디션 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) 멀티 쓰레드는 하나의 메모리 공간을 공유하기 때문에 병렬 처리에 있어서 굉장한 편리함과 효율성을 제공합니다. 하지만 같은 메모리 공간을 공유한다는 건, 여러 쓰레드들이 동시다발적인 일의 처리로 인해 메모리 내에서 오류를 발생시킬 수 있습니다. 이러한 문제를 race condition이라고 함. 이번 포스팅에서는 바로 이 race condition을 처리하는 방법에 대해 알아보겠습니다. #include #include #include #include #include using namespace std; int main() { int shared_memory(0); // 여러 쓰레드들이 이 변수에 동시에 접근하도록 auto co..
[C++] 멀티 쓰레딩 기초 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) #include #include #include #include #include #include using namespace std; int main() { const int num_pro = std::thread::hardware_concurrency(); //cout
[C++] C++17에서 여러 개의 리턴값 반환 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) 통상적으로 하나의 함수는 하나의 리턴 값을 반환하거나, 아니면 아예 리턴 값이 존재하지 않습니다. 이번 포스팅에서는 C++ 17 환경에서 2개 이상의 리턴 값을 반환하는 방법에 대해 알아보겠습니다. #include #include using namespace std; tuple my_func() { return tuple(123, 456); } int main() { tuple result = my_func(); cout
[C++] 람다 함수와 std::function 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요;) 간단한 함수를 정의할 때, 정해진 함수의 포맷을 그대로 따르지 않고 나름의 약식으로 함수를 정의하는 걸 람다lambda 함수라고 합니다. 작성해야 할 코드의 양이 많을 때 아주 효율적으로 사용할 수 있어서 C++ 외에도 다양한 언어들에서 사용되고 있다고 합니다. 오늘은 이 람다 함수에 대해 알아보겠습니다. auto func = [](const int& i)-> void {cout 기호와 그 옆의 void는 리턴 타입을 의미합니다. 일반 함수의 선언에서는 함수 이름 앞에 리턴 타입을 선언하지만, 람다 함수에서는 무조건 매개변수 입력 후 -> 화살표 뒤에 함수의 리턴 타입을 선언합니다. 만약 리턴 타입이 예제와 같이 void라면 ..
[C++] 파일의 임의 위치 접근하기 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요;) C++ 언어를 통해 파일의 데이터를 다룰 때, 파일의 데이터에서 임의의 위치에 접근해서 데이터를 읽거나 수정해야 하는 순간이 있습니다. 이번 포스팅에서는 파일의 임의 위치에 접근하는 방법에 대해 알아보겠습니다. #include #include // 파일 입출력에 사용 #include #include // exit에 사용 #include using namespace std; 예제의 헤더는 위와 같습니다. 파일 입출력을 관리하는 (file stream)헤더와 예외 상황을 처리하는 exit을 사용하기 위해 (C Standard Library)를 추가합니다. int main() { const string filename = "my_f..