温馨提示×

如何实现C++中的自定义迭代器

c++
小亿
109
2024-04-22 14:28:50
栏目: 编程语言

要实现C++中的自定义迭代器,你需要定义一个类来代表这个迭代器,并在这个类中重载一系列操作符来实现迭代器的功能。以下是一个简单的示例:

#include <iostream>

template <typename T>
class CustomIterator {
private:
    T* ptr;
public:
    CustomIterator(T* p) : ptr(p) {}

    T& operator*() {
        return *ptr;
    }

    CustomIterator& operator++() {
        ++ptr;
        return *this;
    }

    CustomIterator operator++(int) {
        CustomIterator tmp = *this;
        ++ptr;
        return tmp;
    }

    bool operator==(const CustomIterator& other) const {
        return ptr == other.ptr;
    }

    bool operator!=(const CustomIterator& other) const {
        return ptr != other.ptr;
    }
};

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    CustomIterator<int> begin(arr);
    CustomIterator<int> end(arr + 5);

    for (CustomIterator<int> it = begin; it != end; it++) {
        std::cout << *it << " ";
    }

    return 0;
}

在上面的示例中,我们定义了一个名为 CustomIterator 的类,它接受一个指向模板类型 T 的指针作为构造函数的参数。我们重载了 * 操作符来返回迭代器指向的元素,重载了 ++ 操作符来实现迭代器的移动,重载了 ==!= 操作符来实现迭代器的比较。

main 函数中,我们创建了一个 CustomIterator 类型的迭代器,并使用它来遍历一个整型数组。实现自定义迭代器可以让你更灵活地操作容器或数据结构,以适应不同的需求和场景。

0