假设像

class Foo
    {
    private:
        ANonTrivialContainer bar;
        OtherData baz;
    };

ANonTrivialContainer的迭代器是双向的。从外部,我想对bar的内容进行处理。什么是可取的
  • 提供beginBar()和相应的endBar(),返回ANonTrivialContainer的迭代器,如Allowing access to container objects in C++的可接受答案。这将起作用,但是会向调用者公开内部细节(因为它需要对底层类进行显式调用)。
  • 提供一个自定义迭代器,它将所有调用转发到内部迭代器。 beginBar和endBar现在改为返回自定义迭代器。
  • 提供一个forEach方法,该方法引用对回调类
  • 的对象的引用

    最佳答案

    我将提供函子作为参数的visitBars泛型方法。

    template<typename F> void visitBars(F visit) {
      for(auto b: bar)
        visit(b);
    }
    

    关于c++ - 循环内部复杂容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17187782/

    10-13 08:40