相关疑难解决方法(0)

返回'任何类型的输入迭代器'而不是vector :: iterator或list :: iterator

假设我想在C++中实现一个数据结构来存储面向图.由于STL容器,Arcs将存储在节点中.我希望用户能够以类似STL的方式迭代节点的弧.

我遇到的问题是我不希望在Node类(实际上是一个抽象基类)中公开我将在具体类中实际使用的STL容器.因此,我不希望我的方法返回std :: list :: iterator或std :: vector :: iterator ...

我试过这个:

class Arc;

typedef std::iterator<std::random_access_iterator_tag, Arc*> ArcIterator;  // Wrong!

class Node {
public:
  ArcIterator incomingArcsBegin() const {
    return _incomingArcs.begin();
  }
private:
  std::vector<Arc*> _incomingArcs;
};
Run Code Online (Sandbox Code Playgroud)

但这不正确,因为vector :: const_iterator不能用于创建ArcIterator.那么这个ArcIterator可以是什么?

我发现这篇论文关于STL的自定义迭代器,但它没有帮助.我今天一定有点沉重......;)

c++ iterator stl

2
推荐指数
1
解决办法
3330
查看次数

标签 统计

c++ ×1

iterator ×1

stl ×1