[英]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.