본문 바로가기

전체 글164

Modern C++ : Custom Iterator Utilities (98, 11, 17, 20) Custom Iterator Utilities in C++ 개요이 문서는 C++ 표준 라이브러리의 반복자 유틸리티 함수들을 직접 구현한 예제를 다룹니다. advance, distance, next, prev 함수들을 구현하여 반복자의 동작 방식을 이해하고, 이를 활용하는 방법을 설명합니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 반복자 유틸리티 도입C++11: std::next(), std::prev() 함수 추가C++17: std::size()와 같은 반복자 관련 유틸리티 추가C++20: std::ranges와 함께 개선된 반복자 지원 내용 설명구현된 타입과 함수들DifferenceType반복자 간의 거리를 표현하는 정수 타입입니다.실제 정의: using DifferenceType = I.. 2025. 8. 29.
Modern C++ : std::inserter (98, 11, 17) std::inserter 개요std::inserter는 C++ 표준 라이브러리의 반복자 어댑터로, 알고리즘이 컨테이너의 특정 위치에 요소를 삽입할 수 있게 해주는 삽입 반복자(insert iterator)를 생성합니다. 이는 표준 알고리즘들이 기존 요소를 덮어쓰는 대신 컨테이너에 새 요소를 삽입할 수 있게 해줍니다. C++ 버전별 주요 키워드 도입 시기C++98: 최초 도입C++11: 우측값 참조와 이동 의미론 지원C++17: insert_iterator에 대한 CTAD(Class Template Argument Deduction) 지원 내용 설명std::inserter는 두 개의 인자를 받는 함수 템플릿입니다:컨테이너: 요소가 삽입될 컨테이너위치: 삽입이 발생할 위치를 가리키는 반복자std::inser.. 2025. 8. 28.
Modern C++ : iterators (98, 11, 17, 20) Iterators in C++ 개요Iterator는 C++ STL(Standard Template Library)에서 컨테이너의 요소들을 순회하고 접근하기 위한 추상화된 방법을 제공하는 객체입니다. 포인터와 유사한 동작을 하지만, 컨테이너의 내부 구현을 캡슐화하여 일관된 인터페이스를 제공합니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 반복자 개념 도입C++11: cbegin(), cend(), crbegin(), crend() 추가C++17: std::size(), std::empty(), std::data() 등 반복자 관련 유틸리티 추가C++20: std::ranges 도입으로 더 나은 반복자 지원 내용 설명반복자 카테고리입력 반복자 (Input Iterator): 읽기 전용, 순방향 .. 2025. 8. 27.
Modern C++ : type aliases (typedef and using) (98, 11) C++ Type Aliases (typedef and using) 개요타입 별칭(Type Alias)은 C++에서 기존 타입에 대한 대체 이름을 정의하는 방법입니다. 이를 통해 코드의 가독성을 높이고 복잡한 타입 선언을 단순화할 수 있습니다. C++ 버전별 주요 키워드 도입 시기typedef: C++98/03부터 사용 가능 (C 언어에서 상속)using (type alias): C++11부터 도입Alias templates: C++11부터 도입 내용 설명1. typedef (C 스타일)C 언어에서 물려받은 전통적인 타입 별칭 방식입니다.typedef std::vector ByteVector1; 2. using (C++11 스타일)C++11에서 도입된 더 직관적인 문법입니다.using ByteVector2.. 2025. 8. 26.
Modern C++ : std::map (98, 11, 17, 20) std::map 개요std::map은 C++ 표준 라이브러리의 연관 컨테이너로, 키-값 쌍을 저장하고 관리합니다. 이진 탐색 트리(BST) 기반으로 구현되어 있으며, 키를 기준으로 자동으로 정렬됩니다. 각 키는 유일해야 하며, 삽입/삭제/검색 연산이 O(log n)의 시간 복잡도를 가집니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 std::map 도입C++11: emplace, cbegin(), cend(), 범위 기반 for 루프 지원C++17: extract, insert_or_assign, try_emplace, merge 메서드 추가C++20: contains 메서드 추가 (C++20 이전에는 find와 end() 비교로 대체) 내용 설명std::map은 다음과 같은 주요 특징을 가.. 2025. 8. 25.
Modern C++ : std::pair, std::tuple (98, 11, 17) std::pair와 std::tuple 개요std::pair와 std::tuple은 C++ 표준 라이브러리에서 제공하는 유틸리티 클래스로, 여러 값을 하나의 단위로 묶어서 다룰 수 있게 해줍니다. 주로 함수에서 여러 값을 반환하거나, 여러 값을 한 번에 전달해야 할 때 유용하게 사용됩니다. C++ 버전별 주요 키워드 도입 시기std::pair: C++98/03부터 도입std::tuple: C++11에서 도입구조화된 바인딩(Structured Binding): C++17에서 도입 내용 설명std::pair두 개의 서로 다른 타입의 값을 하나의 단위로 저장할 수 있는 클래스 템플릿first와 second라는 두 개의 공개 멤버 변수를 가짐비교 연산자(==, !=, , , >, >=)가 오버로딩되어 있음 st.. 2025. 8. 24.
시대별 가치 평가자의 변화, 하늘, 은행, AI 가치를 결정하는 경천 사상.사람의 마음이 현실과 심리에 흔들리지 않고 순정한 상태를 유지하면서 명상의 깊은 상태에 도달할 수 있으면 옛 사람이 말한 하늘에 이를 수 있다. 지금의 말로 하자면 다차원 세계에 진입하는 것이다. 꿈과 같은 이야기이며 꿈과 같은 세상이다. 그 세상에 이를 수 있는 사람은 현실 세상에서 마음이 충분히 단련된 사람임을 검증 받은 것이고 관리가 될 자격을 얻는다. 그러나 이러한 것은 알기도 어렵고 알아도 어렵다.그래서 쉽게 가려고 찾은 방법이 마약류의 약물 효과이고 수련으로 단련된 마음이 아니라 현실의 몸을 마비시켜 그 곳에 도달하려는 것이다. 당연히 그런 사람들이 세상을 리드하면 현실은 대혼란에 빠지게 된다. 소위 말하는 말세다. 그렇게 경천 사상과 마약을 통한 탈 경천 사상이 경.. 2025. 8. 23.
쿠팡 알바 : 야탑1캠프 세척2 세척2 (14:30 ~ 23:30) 다녀왔습니다.땀이 비오듯 흐르니 물과 식염 포도당 잘 섭취하세요. ;;;세척은 세척기를 중심으로 일을 하는데 경험자 분들이 잘 알려주어 빠르게 적응 할 수 있었습니다. 과정은,프레쉬백 RT하차 - 세척기 뒤로 RT정렬 - 프레쉬백 세척기 투입 - 프레쉬백 조립 - 바코드 인식 - 빠레트에 프레쉬백 탑쌓기 - 랩핑 - 상차 준비 - 프레쉬백 상차 첫 날은 탑 쌓기와 랩핑!요령과 근력 그리고 지구력까지 필요한 작업입니다.특히 6단으로 쌓아 전체를 팽팽하게 랩핑하면 기분이 좋았습니다.랩핑도 일정한 근력과 요령이 합쳐져서 근지구력이 필요했는데 빙글빙글 돌면서 작업하여초반에 숨을 헐떡이며 머리가 빙글빙글 돌아 고생했습니다. ㅋ 1시간에 10분씩 휴식하는데 마치 마라톤 하다가 숨.. 2025. 8. 23.
Modern C++ : std::span (20) std::span 개요std::span은 연속된 메모리 영역을 참조하는 가볍고 안전한 래퍼 클래스입니다. C++20에서 도입되었으며, 배열이나 컨테이너의 요소들에 대한 뷰를 제공합니다. 포인터와 크기 쌍을 추상화하여 더 안전하고 표현력 있는 코드를 작성할 수 있게 해줍니다. C++ 버전별 주요 키워드 도입 시기C++20: std::span 도입 내용 설명std::span의 주요 특징:가벼운 참조 타입: std::span은 데이터를 소유하지 않고, 기존 데이터에 대한 뷰만 제공합니다.연속 메모리 컨테이너와 호환: std::vector, std::array, C-style 배열 등과 함께 사용할 수 있습니다.런타임 크기 정보: 배열의 크기를 런타임에 알 수 있습니다.범위 기반 for 루프 지원: 표준 컨테이.. 2025. 8. 23.