Использование boost ::irect_iterator - PullRequest
1 голос
/ 02 января 2012

При попытке использовать boost :: косвенный_итератор я получаю "int не является типом класса, структуры или объединения" Кто-нибудь может увидеть, где я иду не так?

#include <iostream>
#include <set>

#include <boost/iterator/indirect_iterator.hpp>

// Expose the itererator if the container stores pointers.
class MyCollection
{
public:
  // Iterator interface
  typedef boost::indirect_iterator<int*> iterator;

  iterator begin() { return objects.begin(); }

  iterator end() { return objects.end(); }

private:

  std::set<int*> objects;
};

int main()
{
  MyCollection myCollection;

  for(MyCollection::iterator iterator = myCollection.begin(); iterator != myCollection.end(); iterator++)
  {
    std::cout << " " << *iterator;
  }
  return 0;
}

1 Ответ

3 голосов
/ 02 января 2012

Оказывается, вы должны использовать:

typedef boost::indirect_iterator<std::set<int*>::iterator> iterator;
...