Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 定制C++;迭代器(类似于std::find)_C++_Vector_Iterator - Fatal编程技术网

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;