프로그래밍 언어(154)
-
C++ STL: 2장 - STL 컨테이너
2.1 컨테이너의 이해STL의 컨테이너(Container)는 데이터를 저장하고 관리하는 객체입니다. 각 컨테이너는 고유한 특성을 가지고 있어, 상황에 맞는 최적의 컨테이너를 선택하여 사용할 수 있습니다.컨테이너는 크게 세 종류로 나뉩니다:순차 컨테이너: 데이터를 순서대로 저장연관 컨테이너: 키-값 쌍으로 데이터를 저장컨테이너 어댑터: 기존 컨테이너를 변형해 특별한 기능 제공 2.2 순차 컨테이너순차 컨테이너는 데이터가 순차적으로 저장되며, 요소의 삽입과 삭제가 데이터의 순서에 영향을 미칩니다. 주요 순차 컨테이너는 다음과 같습니다: 2.2.1 vector (가변 크기 배열)#include #include int main() { std::vector vec = {1, 2, 3}; vec.push..
2025.01.06 -
C++ STL: 1장 - STL의 이해
1.1 STL이란 무엇인가?C++ 표준 템플릿 라이브러리(STL)는 C++의 강력한 데이터 관리 도구입니다. 컨테이너, 알고리즘, 이터레이터라는 세 가지 핵심 요소로 구성되어 있으며, 이를 통해 데이터를 효율적으로 저장하고 처리할 수 있습니다. STL의 탄생과 발전1994년 Alexander Stepanov와 Meng Lee가 개발한 STL은 1998년 C++ 표준 라이브러리에 포함되었습니다. "제네릭 프로그래밍"이라는 개념을 기반으로 하여, 데이터 타입에 구애받지 않는 유연한 알고리즘과 데이터 구조를 제공합니다. 이러한 접근 방식은 코드의 재사용성과 확장성을 극대화합니다. STL이 가져다주는 이점개발 생산성 향상: 복잡한 자료구조나 알고리즘을 직접 구현할 필요가 없습니다.깔끔한 코드 작성: 템플릿을 활..
2025.01.06 -
데이터 타입 (C++)
1. 기본 데이터 타입 (Fundamental Data Types)정수형 (Integer Types)정수를 저장데이터 타입크기 (바이트)값의 범위예시short2-32,768 ~ 32,767short a = 10;int4-2,147,483,648 ~ 2,147,483,647int b = 20;long4 또는 8플랫폼에 따라 다름long c = 1000;long long8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807long long d = 100000LL;부호 없는 정수형 (Unsigned Integer Types)양수만 저장데이터 타입크기 (바이트)값의 범위예시unsigned short20 ~ 65,535unsigned short a = 300;unsig..
2025.01.04 -
auto -> decltype(표현식)
함수 반환 타입을 지정할 때 사용하는 구문으로 함수의 반환 타입을 컴파일러가 자동으로 추론하고, 그 타입을 decltype을 사용하여 명시적으로 지정한다. 특히 함수 템플릿에서 유용하고, 주로 복잡한 반환 타입을 정확하게 지정하고 싶을 때 사용한다. 장점 함수 템플릿에서 반환 타입이 복잡하거나 인자 타입에 따라 달라지는 경우, 반환 타입을 명확하게 지정할 수 있다.반환 타입이 템플릿 인자나 기타 복잡한 타입일 때, decltype을 사용하여 정확하게 타입을 지정할 수 있다.함수 본문에서 복잡한 계산이 이루어지는 경우, 반환 타입을 명확히 지정하여 코드의 가독성을 높일 수 있다. 적용 사례 컴파일 타임에 복잡한 타입을 생성하는 메타프로그래밍에서 유용하다.다양한 타입에 대해 정확한 반환 타입을 지정해야 ..
2024.08.11 -
std::is_empty - empty class (C++11~)
출처: https://en.cppreference.com/w/cpp/types/is_empty struct is_empty; (since C++11) std::is_empty is a UnaryTypeTrait. If T is an empty type (that is, a non-union class type with no non-static data members other than bit-fields of size 0, no virtual functions, no virtual base classes, and" data-og-host="en.cppreference.com" data-og-source-url="https://en.cppreference.com/w/cpp/types/is_empty" da..
2024.08.04 -
Variable template specialization (C++14 ~)
C++14에서 도입된 기능으로, 변수도 템플릿으로 정의하고 특정 타입에 대해 특수화할 수 있게 해준다.이를 기반으로 타입에 대한 서로 다른 값을 가지는 변수를 정의할 수 있다. 다양한 타입에 대해 서로 다른 값을 가지는 상수나 설정값을 정의할 수 있어, 코드의 가독성이 높아지고 유지보수가 유리해진다. 예제는 ChatGPT를 사용해서 생성해 보았다. 예시 1: 기본 변수 템플릿templateconstexpr T pi = T(3.1415926535897932385); 변수 템플릿 특수화templateconstexpr int pi = 3;타입이 int이면 pi로 정수형 '3'의 값을 가지게 된다. 이 예제를 전체 코드로 보면#include // 변수 템플릿 정의templateconstexpr T pi = T(..
2024.08.04