Iterator(2)
-
[C++] vector 내부에 iterator 클래스 구현 (+ 연산자 오버로딩, 복사 생성자)
vector 내부에 iterator 클래스 만드는데, 클래스 템플릿이기 때문에 내부에 있는 iterator도 템플릿이 된다.iterator는 데이터의 시작 주소와 가리키고 있는 데이터가 시작 주소로부터 몇 번째인지 알아야 한다.즉, iterator는 데이터의 시작 주소와 인덱스(시작 주소로부터 몇 칸 떨어져 있는지)만 알면 된다. ex) 3번째를 가리키는 경우, 시작 주소와 인덱스 2의 주소만 알면 된다.또한 자료형도 알아야 하는데, 템플릿이기 때문에 데이터의 시작 주소 타입은 `T*`이다. ▷ 코드CArr.h#pragma once#include // 클래스 템플릿template// T는 가변 배열에 저장될 데이터 타입이다.class CArr // CArr로 vector를 만들어도 CArr과 iter..
2024.04.03 -
[C++] iterator
iterator (반복자)• 저장된 데이터를 순회(iterate)할 수 있는 기능을 제공하는 객체• iterator는 포인터처럼 동작하지만 포인터가 아니라 클래스 객체이다.사용자가 데이터 구조의 내부 구현을 알 필요 없이 데이터를 순회할 수 있도록 돕는 공통 인터페이스를 제공한다.• 각 iterator는 자기가 구현되어있는 해당 자료구조에 맞게 동작한다.구현되어있는 컨테이너만 다를 뿐, 이름은 동일하고 사용법도 같다.• list의 경우 iterator는 노드의 주소를 저장하며, 연산자 오버로딩(`operator*`, `operator++`, `operator!=` 등)을 통해 데이터에 접근할 수 있도록 한다. iterator가 필요한 이유`std::vector`는 연속된 메모리 구조이므로 인덱스를 통해 ..
2024.03.20