在 C++ 中,要自定義一個迭代器,需要遵循一些基本原則和實現特定的成員函數
class MyIterator {
public:
// 構造函數
MyIterator(/*...*/) {
// 初始化迭代器
}
// 解引用符號"*"重載
typename MyContainer::value_type& operator*() {
// 返回當前元素的引用
}
// 箭頭操作符 "->" 重載(可選)
typename MyContainer::value_type* operator->() {
return &operator*();
}
// 前置遞增操作符 "++" 重載
MyIterator& operator++() {
// 將迭代器移動到下一個元素
return *this;
}
// 后置遞增操作符 "++" 重載(可選)
MyIterator operator++(int) {
MyIterator temp(*this);
++(*this);
return temp;
}
// 比較操作符 "==" 和 "!=" 重載
bool operator==(const MyIterator& rhs) const {
// 檢查兩個迭代器是否相等
}
bool operator!=(const MyIterator& rhs) const {
return !(*this == rhs);
}
private:
// 保存迭代器內部狀態的變量
};
class MyContainer {
public:
typedef MyIterator iterator;
// 返回指向容器第一個元素的迭代器
iterator begin() {
// 創建并返回指向第一個元素的迭代器
}
// 返回指向容器尾部(最后一個元素之后的位置)的迭代器
iterator end() {
// 創建并返回指向尾部的迭代器
}
// 其他容器相關的成員函數
};
MyContainer container;
for (MyContainer::iterator it = container.begin(); it != container.end(); ++it) {
// 訪問元素:*it
}
注意:這里給出的代碼僅作為示例,實際實現時需根據具體情況進行修改。例如,根據容器的數據結構和實現方式,可能需要在迭代器類中添加更多的成員函數和變量。