본문 바로가기

개발121

Modern C++ : 유틸리티 함수 활용 (11, 17) 모던 C++ 유틸리티 함수 활용 개요utils.h 헤더 파일에 정의된 다양한 유틸리티 함수를 활용하여 C++11, C++17, C++20 등 모던 C++의 주요 표준 기능들을 사용하는 방법을 알아봅니다. 템플릿, constexpr, std::string_view, 구조적 바인딩(structured bindings) 등 코드의 재사용성과 가독성, 성능을 높여주는 기능들을 실제 예제를 통해 학습합니다. C++ 버전별 주요 키워드 도입 시기C++11constexpr: 컴파일 타임에 값을 계산할 수 있는 상수 표현식입니다.std::array: 정적 크기의 배열을 위한 컨테이너입니다.std::vector, std::map: 개선된 표준 라이브러리 컨테이너입니다.범위 기반 for 루프 (Range-based for.. 2025. 9. 15.
Modern C++ : 직접 구현한 표준 알고리즘, equal, fill_n, iota, copy, accumulate (98, 11) 직접 구현한 표준 알고리즘: equal, fill_n, iota, copy, accumulate 개요C++ 표준 라이브러리의 헤더에 포함된 기본 알고리즘들을 직접 구현해보는 예제입니다. 반복자(Iterator)를 사용하여 컨테이너의 원소를 순회하고 조작하는 방법을 이해하는 데 도움이 됩니다. 이 문서에서는 equal, fill_n, iota, copy, accumulate 함수의 구현과 사용법을 다룹니다. C++ 버전별 주요 키워드 도입 시기C++98: std::vector, 반복자(iterator) 개념, 헤더의 기본 함수들C++11: cstdint (예: std::int32_t), std::boolalpha 내용 설명mystd 네임스페이스 안에 표준 라이브러리 함수와 유사하게 동작하는 함수들을 구.. 2025. 9. 14.
Modern C++ : std::function (11) std::function - 호출 가능한 모든 것을 위한 래퍼 개요std::function은 C++11부터 도입된 표준 라이브러리의 기능으로, 함수 포인터, 함수 객체(Functor), 람다 표현식 등 호출 가능한(callable) 모든 것을 저장하고, 감싸고, 호출할 수 있는 다형성 래퍼(polymorphic wrapper)입니다. 이를 통해 다양한 형태의 호출 가능한 객체를 동일한 인터페이스로 처리할 수 있어 코드의 유연성과 재사용성을 크게 향상시킵니다. C++ 버전별 주요 키워드 도입 시기C++11 : std::function이 처음 도입되었습니다. 내용 설명std::function은 템플릿 클래스로, std::function와 같은 형태로 선언합니다.ReturnType: 함수의 반환 타입ArgTy.. 2025. 9. 13.
Modern C++ : std::min, max, equal, any_of, all_of, none_of (98, 11, 17) std::min, max, equal, any, all, none 개요C++ 표준 라이브러리는 컨테이너의 원소를 검색하고 비교하는 데 유용한 다양한 알고리즘을 제공합니다. 이 문서에서는 특정 조건을 만족하는 원소를 찾거나, 두 범위를 비교하는 데 사용되는 std::min, std::max, std::equal, std::any_of, std::all_of, std::none_of 함수에 대해 설명합니다. C++ 버전별 주요 키워드 도입 시기C++98: std::min, std::max, std::min_element, std::max_element, std::equalC++11: std::any_of, std::all_of, std::none_ofC++17: 병렬 실행 정책(std::execution)을.. 2025. 9. 12.
Modern C++ : std::remove, std::sort, std::replace (98, 20) std::remove, std::sort, std::replace 개요C++ 표준 라이브러리에서 제공하는 std::remove, std::sort, std::replace 계열 함수들은 컨테이너의 원소를 정렬하거나, 특정 조건에 맞는 원소를 바꾸거나, 제거하는 데 사용되는 강력한 도구입니다. 이 함수들을 사용하면 복잡한 반복문 없이도 간결하고 효율적인 코드를 작성할 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98: std::sort, std::replace, std::replace_if, std::remove, std::remove_ifC++20: std::erase, std::erase_if (컨테이너용 비멤버 함수) 내용 설명std::sort: 지정된 범위의 원소들을 오름차순 또는 사용자.. 2025. 9. 11.
Modern C++ : std::transform & std::accumulate (98) std::transform & std::accumulate 개요std::transform과 std::accumulate는 C++ 표준 라이브러리의 및 헤더에 포함된 강력한 함수입니다. std::transform은 범위 내의 각 원소에 지정된 연산을 적용하고 그 결과를 다른 범위에 저장하는 데 사용됩니다. std::accumulate는 범위 내의 모든 원소를 합산하여 단일 값을 계산하는 데 사용됩니다. 이 함수들은 반복문을 직접 작성하는 것보다 코드를 더 간결하고 가독성 높게 만들어 줍니다. C++ 버전별 주요 키워드 도입 시기C++98: std::transform, std::accumulate가 도입되었습니다. 내용 설명std::transformstd::transform 함수는 두 가지 형태로 오버로.. 2025. 9. 10.
Modern C++ : std::generate, local static variables (98, 11, 14) std::generate, 지역 정적 변수 (Local Static Variables) 개요std::generate는 C++ 표준 라이브러리의 헤더에 포함된 함수로, 지정된 범위의 모든 요소에 특정 함수(제너레이터)를 호출하여 반환된 값을 채워 넣는 역할을 합니다. 이 과정에서 제너레이터 함수 내부에 지역 정적 변수(Local Static Variables)를 활용하면, 함수 호출 간에 상태를 유지해야 하는 경우 매우 유용합니다.본 문서에서는 std::generate를 사용하여 벡터를 임의의 값으로 채우는 예제를 통해, 제너레이터 함수 내에서 지역 정적 변수가 어떻게 상태를 보존하고 효율적인 코드 작성에 기여하는지 설명합니다. C++ 버전별 주요 키워드 도입 시기C++98: std::generate, .. 2025. 9. 9.
Modern C++ : Lambda Expressions (11, 14, 17, 20) Lambda Expressions 개요C++ 람다 표현식은 이름 없는 함수 객체를 간결하게 생성할 수 있는 기능입니다. 람다는 코드 내에서 인라인으로 함수 객체를 정의할 수 있게 해주며, 특히 알고리즘과 함께 사용할 때 유용합니다. C++ 버전별 주요 키워드 도입 시기C++11: 기본 람다 표현식 도입C++14: 일반화된 람다 캡처, 반환 타입 추론 개선C++17: constexpr 람다, *this 캡처C++20: 템플릿 람다, [=, this] 명시적 캡처 경고 제거 내용 설명기본 구문[캡처](매개변수) -> 반환타입 { 함수 본문 }캡처 모드[=]: 값으로 모든 외부 변수 캡처[&]: 참조로 모든 외부 변수 캡처[a, &b]: 특정 변수만 명시적으로 캡처 (a는 값으로, b는 참조로)[this]: .. 2025. 9. 8.
Modern C++ : std::numeric_limits (98, 11, 17) 수치 한계와 특성 (Numeric Limits with std::numeric_limits) 개요std::numeric_limits는 C++ 표준 라이브러리의 헤더에 정의된 템플릿 클래스로, 기본 숫자 타입들의 속성과 한계를 조회하는 데 사용됩니다. 이 클래스를 통해 타입의 최대값, 최소값, 정밀도 등 다양한 수치적 특성을 컴파일 타임에 얻을 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 std::numeric_limits 템플릿 클래스 도입C++11: lowest(), max_digits10 등 추가 멤버 함수 도입C++17: is_iec559를 통한 IEEE 754 부동소수점 준수 여부 확인 내용 설명1. 기본 사용법std::numeric_limits는 템플릿 클래스로, 특정 .. 2025. 9. 7.