簡體   English   中英

向量迭代器覆蓋運算符->

[英]Vector iterator override operator ->

我必須做作業來制作自己的抽象類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);
    }
};

我的問題是運算符->是否正確定義。

謝謝

我相信您確實想要一個稍微修改的定義,該定義可以在向量的當前位置獲取值,即return &((*v_)[position_]); 如果您已重載向量類的operator[] 否則,為了訪問向量的buffer_ ,必須首先取消引用向量才能到達緩沖區,即return &(v_->buffer[position_]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM