我有一个看起来像这样的复杂对象:
struct A
{
int a;
}
struct B
{
int b;
vector<A> vecA;
}
我目前正在通过以下方式打印出B的向量:
struct PrintStruct
{
ostream &ostream_;
PrintStruct(ostream &stream) : ostream_(stream) {}
void operator()(const A& elementA)
{
ostream_ << elementA.a;
}
void operator()(const B& elementB)
{
ostream_ << elementB.b;
for_each(elementB.vecA.begin(), elementB.vecA.end(), (*this));
}
}
void print()
{
vector<B> vecB;
for_each(vecB.begin(), vecB.end(), PrintStruct(cout));
}
那一定是最好的方法吗?我主要担心的是在函子本身的
(*this)
中调用for_each
。这样安全吗?我认为应该这样,但是我不确定是否会有意想不到的后果? 最佳答案
我主要担心的是在函子本身的(*this)
中调用for_each
。这样安全吗?
通常无法回答,但就您而言,这是安全的。
对for_each
的调用将复制PrintStruct
对象并使用它。副本的ostream_
成员将引用与原始ostream_
的PrintStruct
成员相同的对象。它应该没有问题。