gpt4 book ai didi

c++ - QVariant vs boost::any vs boost::variant

转载 作者:太空狗 更新时间:2023-10-29 21:43:54 25 4
gpt4 key购买 nike

我需要一种有效的方法来将不同类型(int、float、QString 或 std::string、bool)的值存储在“通用”容器(如 QVariant)中。

我想减少内存使用量。

我更喜欢不存储内部值类型的容器,因为这是一种开销。

我应该使用哪个?

最佳答案

boost::any 可以保存任何类型的值,但您必须知道它可能保存什么才能提取值,并且它会在堆上为存储的值分配内存。

boost::variant 另一方面,只能存储一组指定类型的值,您可以很容易地找出它包含的内容,sizeof boost::variant 将是它包含的最大值类型的 sizeof + 一些额外的存储值类型,因为它不使用堆内存(除非使用递归变体)。

从内存使用的角度来看,boost::variant 可能更高效,因为它不使用堆内存。此外,boost::variantboost::any 类型安全性更高,编译器可以在编译时为您发现更多错误。

关于c++ - QVariant vs boost::any vs boost::variant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612193/

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