要實現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
類型的迭代器,并使用它來遍歷一個整型數組。實現自定義迭代器可以讓你更靈活地操作容器或數據結構,以適應不同的需求和場景。