gpt4 book ai didi

c++ - 使用 for_each 打印复杂对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:30:29 26 4
gpt4 key购买 nike

我有一个看起来像这样的复杂对象:

struct A
{
int a;
}

struct B
{
int b;
vector<A> vecA;
}

我目前通过以下方式打印出 B 的 vector :

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));
}

这一定是最好的方法吗?我主要关心的是在仿函数本身的 for_each 中调用 (*this)。这样做安全吗?我觉得应该可以,但是不知道会不会有什么意想不到的后果?

最佳答案

My main point of concern is calling the (*this) in the for_each within the functor itself. Is that safe to do?

一般无法回答,但您的情况是安全的。

for_each 的调用生成了 PrintStruct 对象的拷贝并使用它。拷贝的 ostream_ 成员将引用与原始 PrintStructostream_ 成员相同的对象。应该没有问题。

关于c++ - 使用 for_each 打印复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37441839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com