태그: iterator
6편
-
C++ 반복자 무효화: vector iterators incompatible 크래시 원인과 해결
vector iterators incompatible 같은 크래시를 일으키는 반복자 무효화를 vector·list·map·unordered_map·deque별 규칙으로 정리하고, 범위 기반 for에서 erase하는 실수를 포함한 10가지 오류 패턴과 안전한 삭제 방법을 설명합니다.
-
C++20 ranges::subrange: 반복자 쌍을 범위로 묶기와 std::span과의 차이
반복자 두 개를 따로 넘기던 코드를 C++20 std::ranges::subrange 하나로 묶어 ranges 알고리즘과 뷰에 그대로 넘기는 방법을 설명합니다. 벡터를 복사 없이 둘로 나누기, 알고리즘 결과를 범위로 받기, 청크 처리 예제와 std::span과의 차이를 다룹니다.
-
C++ sregex_iterator·sregex_token_iterator: 모든 매치 순회와 문자열 분할
문자열 안의 모든 정규식 매치를 sregex_iterator로 순회하며 캡처 그룹을 꺼내고, sregex_token_iterator로 구분자 기준 분할을 하는 방법을 단어 추출, URL 파싱, 로그 파싱 예제로 보여줍니다. 임시 문자열 수명, 빈 매치, 성능 함정도 다룹니다.
-
C++ 반복자: 종류와 연산, iterator_traits, 범위 기반 for의 디슈가링
Input부터 Random Access까지 반복자 카테고리별로 허용되는 연산과 복잡도, iterator_traits와 C++20 iterator_concept, 범위 기반 for가 실제로 어떤 코드로 풀리는지, 그리고 무효화된 반복자와 end() 역참조 같은 버그를 예제로 설명합니다.
-
C++ Iterator 카테고리 이해하기: begin/end부터 성능 비교까지
순회 중 erase 후 크래시가 나는 문제에서 출발해 반복자 카테고리별 지원 연산, 반개구간 [begin, end), reverse_iterator의 base() 변환, back_inserter 같은 어댑터를 예제로 설명합니다. std::advance와 distance 사용법도 다룹니다.
-
나만의 Iterator 만들기: Forward부터 Bidirectional까지
직접 만든 컨테이너에 std::sort를 쓰고 싶을 때 필요한 요구 사항과 iterator_traits를 짚고, Input부터 Random Access까지 반복자를 단계별로 구현합니다. 카테고리 과대 선언, 후위 ++ 반환 타입 실수와 C++20 iterator_concept도 다룹니다.