0
我想實現一個運算符而不是跳過某個值的向量。這是我寫的,跟我對着評論的問題:實現跳過迭代器的增量
template<class MyVector>
struct VectorSkipConstIterator : MyVector::const_iterator {
using Base = typename MyVector::const_iterator;
using ValueType = typename MyVector::value_type;
VectorSkipConstIterator(const ValueType &skip) : Base(), skip_(skip){};
VectorSkipConstIterator(Base it_, const ValueType &skip)
: Base(it_), skip_(skip){};
VectorSkipConstIterator &operator++() {
do {
Base::operator++();
} while (/* have not reached the end */ && this->operator*() == skip_);
return *this;
}
private:
ValueType skip_;
};
所以,問題是,運營商++已經停止的地方(即,在結束),即使最後的值(S)在矢量需要跳過。這怎麼能實現?
一般來說,你會檢查你是否在客戶端代碼中而不是在迭代器中。從迭代器繼承往往是一個壞的想法™,因爲它可能只是一個指針。 – TartanLlama