C++ 定制C++;迭代器(类似于std::find)
我需要创建一个迭代器,它能够根据输入条件“查找”一个值。我现在很困惑我该如何处理这个问题。(自定义向量类) 这是我的迭代器代码C++ 定制C++;迭代器(类似于std::find),c++,vector,iterator,C++,Vector,Iterator,我需要创建一个迭代器,它能够根据输入条件“查找”一个值。我现在很困惑我该如何处理这个问题。(自定义向量类) 这是我的迭代器代码 class iterator { public: //Variables int _index; vector* _v; //Constructors iterator() : _index(0), _v(0) { } iterator(int index, vector * vec) :
class iterator {
public:
//Variables
int _index;
vector* _v;
//Constructors
iterator() : _index(0), _v(0) { }
iterator(int index, vector * vec) : _index(index), _v(vec) { }
//Functions
iterator& operator=(const iterator& itr){
_v = itr._v;
_index = itr._index;
return *this;
}
friend bool operator==(const iterator& itr_a, const iterator& itr_b){
return (itr_a._index == itr_b._index && itr_a._v == itr_b._v);
}
friend bool operator!=(const iterator& itr_a, const iterator& itr_b){
return !(itr_a == itr_b);
}
iterator& operator++ () { _index++; return *this; }
iterator& operator++ (int) { _index++; return *this; }
iterator& next() { _index++; return *this; }
int& operator*() { return (*_v)[_index]; }
};
现在,这个迭代器代码开始工作,然后尝试使用
for(vector::iterator i = vec.begin(); i != vec.end(); i++) std::cout << *i std::end;
for(vector::iterator i=vec.begin();i!=vec.end();i++)std::您是否尝试过使用std::find()
?我们不需要使用STL库中的任何东西,它必须手动完成,这就是为什么我说类似于std::find()的std::find不是迭代器。find使用迭代器。
vector::iterator i = vec.find(5); //Prints out "5" x amount of times
for(; j != vec.end(); j.next()) std::cout << *j << std::endl;