如何从C++中的另一个类迭代获取数据?

1 c++ iterator

在A类中,有一个向量V.V是私有成员.

在B级,我想要打印V的所有项目.最好的方法是什么?

在同一个类中获取向量的迭代器非常容易,但在另一个类中却不容易.

谢谢你的阅读.

Wil*_*lka 5

采取你的观点:

在同一个类中获取向量的迭代器非常容易,但在另一个类中却不容易.

(并假设想要打印元素只是一个其他复杂动作的占位符)

您仍然可以在暴露的迭代器为您的载体从A可以内部使用B通过typedef

class A
{
private:
    std::vector<int> V;
public:
    typedef std::vector<int>::const_iterator const_iterator;
    const const_iterator begin() const
    {
        return V.begin();
    }

    const const_iterator end() const
    {
        return V.end();
    }
};
Run Code Online (Sandbox Code Playgroud)

然后你可以使用这样的迭代器:

class B
{
public:
    void Foo()
    {
        A a;
        // do stuff that will put things into the collection inside 'a'
        std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));
    }
};
Run Code Online (Sandbox Code Playgroud)

const_iterator在这种情况下使用过,因为你要求进行只读访问,但是iterator如果你需要写访问权限,你可以使用它(虽然这可能是一个糟糕的设计选择,写入这样的内部成员).