我要做作业来制作我自己的抽象类Vector。这个向量应该有迭代器。我在Vector的公共部分创建迭代器。这是我的迭代器代码:
class iterator {
friend class Vector;
Vector* v_;
int position_;
iterator(Vector* v,int position)
: v_(v),
position_(position)
{}
public:
iterator()
: v_(0),
position_(0)
{}
iterator& operator++() {// pre
position_++;
return *this;
}
iterator operator++(int) {//post
iterator res=*this;
position_++;
return res;
}
T& operator*() {
return v_->buffer_[position_];
}
T* operator->() {
return &buffer_[position_];
}
bool operator==(const iterator& other) const {
return position_ == other.position_;
}
bool operator!=(const iterator& other) const {
return !operator==(other);
}
};
我的问题是,如果运营商 - >是正确的定义。
谢谢
答案 0 :(得分:1)
我相信你真的想要一个稍微修改过的定义,它会在向量的当前位置获取值,例如return &((*v_)[position_]);
,如果你已经重载了向量类的operator[]
。否则,为了访问向量的buffer_
,您必须先取消引用向量才能到达缓冲区,即return &(v_->buffer[position_]);