代码之家  ›  专栏  ›  技术社区  ›  Yippie-Ki-Yay

C++增强型问题

  •  7
  • Yippie-Ki-Yay  · 技术社区  · 15 年前

    有人知道 boost::get 对于 boost::variant 是一个 不是。

    性能关键部件 enum .

    很明显,这很快,但是很难看,而且现在我必须重构代码,以便它能够与 ,我想去掉那部分旧代码,用 boost::变量 .

    所以,如果有人知道 boost::get<x> 执行与泛型的比较 enum-based 打字发送,如果你能分享这方面的知识,我将不胜感激。

    还有另一种用法 boost::variant<types> 带定制访客(如 文档)-这可能比 boost::获取 对我来说?

    谢谢您。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Björn Pollex    15 年前

    您仍然可以编写一个简单的测试应用程序来比较这两者,它不必是生产环境。

    我的一个同事最近也遇到了类似的问题。在他的场景中有不同类型的对象,但他总是事先知道他期望的类型。而且他的数据结构很大,所以内存是个问题。他用 void * reinterpret_cast . 这可以防止多态性的内存开销,而且速度非常快。不过,你必须绝对确定自己在做什么,否则事情就会爆炸。

        2
  •  3
  •   Diego Sevilla    15 年前

    看看密码, get<> 使用 boost::variant . 反过来,访问者机制依赖于 mpl 一步一步地执行。最多也就是说 n个 踏上 n个