gpt4 book ai didi

c++ - 将子类列表转换为父类(super class)列表

转载 作者:行者123 更新时间:2023-11-28 03:00:42 25 4
gpt4 key购买 nike

我正在尝试转换 std::set<B>std::set<A> ,其中:

class A {

}

class B : public A {

}

最快/最有效的方法是什么?

最佳答案

没有用于此*的恒定时间方法。最好的办法是使用 std::copythe constructor of std::set taking two iterators (aka "range constructor") .

std::set<B> bs = ...;

std::set<A> as(bs.begin(), bs.end());

*在sizeof(B) == sizeof(A)(即class B 不引入新成员)并且如果类不使用虚拟表(具有虚拟函数):您可以使用不安全的强制转换。但只有当您知道自己在做什么时才这样做非常好(它仍然是未定义的行为,但您的编译器可能会按预期执行)。这同样适用于使用指针和不需要偏移指针的情况(使用多重继承或其他一些情况可能是这种情况,具体取决于您的编译器)。

关于c++ - 将子类列表转换为父类(super class)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927488/

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