如何实现一个与之相匹配的迭代器 mylterator, 该迭代器能像vector的迭代器一样,可以用它来遍历或操作访问myVector中的对象。
时间: 2024-02-17 16:03:58 浏览: 135
可迭代对象,生成器,迭代器
要实现一个与之相匹配的迭代器 myIterator,需要定义一个类,在其中包含指向 myVector 中元素的指针,以及相关的重载操作符,例如 `++`、`--`、`*`、`->` 等。以下是一个简单的实现示例:
```c++
template<typename T>
class myIterator {
private:
T *ptr; // 指向 myVector 中元素的指针
public:
myIterator(T *p = nullptr) : ptr(p) {} // 构造函数
T& operator*() const { // 重载解引用操作符
return *ptr;
}
T* operator->() const { // 重载箭头操作符
return ptr;
}
myIterator& operator++() { // 重载前缀自增操作符
ptr++;
return *this;
}
myIterator operator++(int) { // 重载后缀自增操作符
myIterator tmp = *this;
ptr++;
return tmp;
}
bool operator==(const myIterator &rhs) const { // 重载相等操作符
return ptr == rhs.ptr;
}
bool operator!=(const myIterator &rhs) const { // 重载不等操作符
return ptr != rhs.ptr;
}
};
```
这样,我们就可以通过实例化一个 myIterator 对象来进行 myVector 中元素的遍历或操作了,例如:
```c++
myVector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
myIterator<int> iter = vec.begin();
for (; iter != vec.end(); iter++) {
cout << *iter << " ";
}
// 输出:1 2 3
```
阅读全文