Programming/c++
-
[c++] Value Category ( lvalue, prvalue, xvalue ) , decltype함수Programming/c++ 2023. 10. 20. 16:16
타입과 value category는 다른 개념입니다! Value Category c++에서는 5가지의 값 카테고리가 존재합니다. - lvalue ( left value ) : 좌측값 - rvalue (right value ) : 우측값 - prvalue ( pure rvalue ) : 순수 우측값 - xvalue ( expiring value) : 소멸하는 값 - glvalue ( generalized lvalue) : 일반화된 좌측값 즉, 값 카테고리는 좌측값/우측값을 말합니다. 값 카테고리를 구분하기 위해 2가지 조건이 있습니다. - 정체를 알 수 있는가? : 해당 식이 다른 식과 같은지 다른지 구분할 수 있다. 일반적인 변수라면 주소값을 취해서 구분할 수 있고, 함수의 경우라면 이름만 확인하면 된다..
-
[c++] std::moveProgramming/c++ 2023. 10. 20. 14:58
1. 함수 원형 move 할당 연산자를 호출하는 move 생성자 // Move constructor. MemoryBlock(MemoryBlock&& other) noexcept : _data(nullptr) , _length(0) { *this = std::move(other); } // C++ 14 이전에는 constexpr 아님! template constexpr typename std::remove_reference::type&& move(T&& t) noexcept; 2. std::move move 할당 연산자 메모리, 파일 핸들 및 소켓과 같은 리소스를 해제하여 리소스 누수를 방지할 수 있습니다. std::move함수는 lvalue를 rvalue로 변환합니다. std::move된 객체를 함수에 ..
-
[C++] 공용체 UnionProgramming/c++ 2023. 9. 13. 21:55
Union 공용체는 하나의 정해진 데이터형이 아니라 int, float 같이 여러개의 데이터타입을 사용해야 할 때 유용합니다. 개체가 많고 메모리가 제한된 경우 메모리를 절약하는데 유용할 수 있지만, 주의해서 사용해야 합니다. 구조체와 비슷하지만 모든 멤버 변수가 하나의 메모리 공간을 공유한다는 점에서 다릅니다. union은 내부에 여러개의 데이터 타입의 멤버 변수를 선언하지만 실제 사용시에는 하나의 멤버 변수만 사용할 수 있습니다. 공용체는 크기가 가장 큰 멤버 변수의 크기로 메모리를 할당받습니다. Example 1 union uData { char c;// 1byte int i;// 4byte short s;// 2byte long l;// 4byte float f;// 4byte double d;/..
-
[c++] trim( ), 공백, 개행, 탭 제거 (whitespace 제거)Programming/c++ 2023. 6. 15. 14:06
java에서는 trim( ) 함수를 제공하지만 C++에서는 boost 라이브러리 사용하지 않으면 제공하지 않습니다. 그래서 trim( )처럼 사용하기 위한 예제들을 포스팅하겠습니다~ 문자열의 왼쪽(선행), 오른쪽(후행)에 whitespace가 있다면 제거하는 방법입니다. Whitespace 문자 유니코드 이름 약칭 U+0020 space SPC \t U+0009 horizontal tab TAB \n U+000A newline LF \v U+000B vertical tab VT \f U+000C feed FF \r U+000D carriage return CR ASCII Code 이름 10진 16 문자 horizontal tab 9 0x09 HT newline 10 0x0A LF vertical tab ..
-
[c++] multisetProgramming/c++ 2023. 2. 12. 22:30
multiset 클래스는 포함된 요소값이 고유할 필요가 없고 데이터가 자동 정렬되는 기준인 키 값으로 사용된 컬렉션의 데이터를 저장 및 검색하는 데 사용됩니다. 요소의multiset키 값은 직접 변경되지 않을 수 있습니다. 대신, 이전 값을 삭제하고 새 값의 요소를 삽입해야 합니다. 1. 클래스 헤더 파일 #include 2. 클래스 원형 template class multiset 3. Parameter (매개 변수) key multiset에 저장되는 요소 데이터 형식 Compare multiset 두 요소 값을 정렬 키로 비교하여 해당 요소의 상대 순서를 확인할 수 있는 함수 개체를 제공하는 형식 이진 조건자 lessKey 가 기본값입니다. Allocator 메모리 할당 및 할당 취소에 대한 multi..
-
[c++] priority_queueProgramming/c++ 2023. 2. 12. 14:11
c++에서 priority_queue는 max heap 개념입니다. 가장 큰 요소가 항상 맨 위 위치에 있도록 해당 요소를 정렬합니다. 항상 가장 크거나 우선 순위가 가장 높은 일부 기본 컨테이너 형식의 최상위 요소에 대한 액세스를 제한하는 기능 제한을 제공하는 템플릿 컨테이너 어댑터 클래스입니다. 새 요소를 추가할 priority_queue 수 있으며 해당 요소의 priority_queue 최상위 요소를 검사하거나 제거할 수 있습니다. 1. 클래스 헤더 파일 #include 2.클래스 원형 template class priority_queue priority_queue pq; // T : 구조체 3. Parameter (매개 변수) Type priority_queue에 저장되는 요소 데이터 형식 Con..
-
[c++] basic_regex classProgramming/c++ 2023. 1. 20. 14:58
1. Parameter Elem The type of element to find a match for. RXtraits Traits class for elements. 2. Described 클래스 템플릿은 정규식을 보유하는 개체를 설명합니다. 이 클래스 템플릿의 개체는 템플릿 함수 regex_match, regex_search 및 regex_replace 전달할 수 있습니다. 또한 정규식과 일치하는 텍스트를 검색하기 위해 적절한 텍스트 문자열 인수를 전달합니다. 이 클래식 템플릿에는 char 타입 원소인 regex와 wchar_t 타입 원소인 wregex를 사용하는 두 개의 전문 클래스 템플릿이 있습니다. 3. Member member default public static const flag_typ..