gpt4 book ai didi

c++ - 工厂内部的对数返回类型搜索

转载 作者:搜寻专家 更新时间:2023-10-30 23:54:03 27 4
gpt4 key购买 nike

考虑以下情况

struct Base {};
struct A : Base;
struct B : Base;
struct C : Base;
struct D : Base;
....
Base* createFromIndex(size_t index) {
if (0 == index) return new A();
if (1 == index) return new B();
if (2 == index) return new C();
....
}

我想知道 Base children 的数量是否足够大,有什么办法可以使函数更快?例如。除了硬编码二分搜索决策树之外,还有什么方法可以实现二分搜索吗?

最佳答案

您可以使用 switch - 在大多数编译器中,它被实现为近范围值的跳转表 (O(1))(似乎是您的情况)和更广泛的“链接分支”范围(二进制搜索,O(log N))。

另见此处:http://www.codeproject.com/Articles/100473/Something-You-May-Not-Know-About-the-Switch-Statem

关于代码的优雅和可读性 - 使用 switch 通常在这些方面工作得很好。

除此之外,正如其他人提到的,您可以为每个类创建工厂(这将负责构建每个特定的类)并将工厂实例存储在 HashMap 中(或直接存储在数组 - 查找表中)。然后您可以再次使用 O(1) 按索引调用工厂。

关于c++ - 工厂内部的对数返回类型搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501329/

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