
ParentIterator::next() 메서드는 Iterator를 다음 요소로 이동시키는 역할을 합니다. 하지만, 다음 요소가 없을 때 어떻게 동작할까요?
Iterator가 마지막 요소를 가리키고 있다면, next() 메서드를 호출하면 예외가 발생합니다. 예를 들어, C++의 std::out_of_range 예외가 발생할 수 있습니다.
다음은 예시 코드입니다.
#hostingforum.kr
cpp
#include
#include
#include
class ParentIterator {
public:
ParentIterator(const std::vector& vec) : vec_(vec), it_(vec_.begin()) {}
int operator*() const { return *it_; }
ParentIterator& operator++() {
if (it_ != vec_.end()) {
++it_;
}
return *this;
}
bool operator!=(const ParentIterator& other) const { return it_ != other.it_; }
private:
const std::vector& vec_;
std::vector::const_iterator it_;
};
int main() {
std::vector vec = {1, 2, 3};
ParentIterator it(vec);
while (it != ParentIterator()) {
std::cout << *it << std::endl;
++it;
}
// Iterator가 마지막 요소를 가리키고 있다면, next() 메서드를 호출하면 예외가 발생합니다.
try {
++it; // 예외가 발생합니다.
} catch (const std::out_of_range& e) {
std::cout << "Iterator가 마지막 요소를 가리키고 있습니다." << std::endl;
}
return 0;
}
이 예시 코드에서는 ParentIterator 클래스를 정의하고, Iterator가 마지막 요소를 가리키고 있다면 next() 메서드를 호출했을 때 예외가 발생하는 것을 보여줍니다.
2025-05-18 04:42