在A类中,有一个向量V.V是私有成员.
在B级,我想要打印V的所有项目.最好的方法是什么?
在同一个类中获取向量的迭代器非常容易,但在另一个类中却不容易.
谢谢你的阅读.
采取你的观点:
在同一个类中获取向量的迭代器非常容易,但在另一个类中却不容易.
(并假设想要打印元素只是一个其他复杂动作的占位符)
您仍然可以在暴露的迭代器为您的载体从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
如果你需要写访问权限,你可以使用它(虽然这可能是一个糟糕的设计选择,写入这样的内部成员).
归档时间: |
|
查看次数: |
656 次 |
最近记录: |