向量迭代器覆盖运算符 - >

时间:2011-05-09 19:58:47

标签: c++

我要做作业来制作我自己的抽象类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);
    }
};

我的问题是,如果运营商 - >是正确的定义。

谢谢

1 个答案:

答案 0 :(得分:1)

我相信你真的想要一个稍微修改过的定义,它会在向量的当前位置获取值,例如return &((*v_)[position_]);,如果你已经重载了向量类的operator[]。否则,为了访问向量的buffer_,您必须先取消引用向量才能到达缓冲区,即return &(v_->buffer[position_]);