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++ : 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.
Modern C++ : std::vector (98, 11, 14, 17, 20)
C++ std::vector 컨테이너 개요std::vector는 C++ 표준 라이브러리에서 제공하는 동적 배열 컨테이너로, 연속된 메모리 공간에 요소를 저장합니다. 자동으로 메모리를 관리하고 크기를 동적으로 조정할 수 있어 가장 널리 사용되는 컨테이너 중 하나입니다. 임의 접근이 가능하고, 끝에서의 삽입/삭제가 효율적입니다. C++ 버전별 주요 키워드 도입 시기C++98/03: 기본 std::vector 기능 도입C++11: 이동 생성자/대입 연산자, emplace_back(), shrink_to_fit()C++14: 일반화된 람다 캡처와 함께 사용 개선C++17: 구조적 바인딩과 함께 사용 개선, emplace_back()이 참조 반환C++20: std::span과의 호환성, std::ranges 지원..
2025. 8. 21.