最佳实践:boost :: variants和标准容器

时间:2011-07-17 18:18:55

标签: c++ boost

我正在存储一个值向量,这些值可以在运行时确定不同的类型。这些值将始终与每个实例的类型相同。

哪种更好的做法?为什么呢?

std::vector< boost::variant<int, std::string, double> > values;

OR

boost::variant< std::vector<int>, std::vector<string>, std::vector<double> > values;

3 个答案:

答案 0 :(得分:2)

前者,因为它可以节省打字并且更灵活;你的规格可能会改变。

后者,因为它提供了更强的保证,在内存使用方面更紧凑,因此可能更快。

根据您的需要选择。

答案 1 :(得分:1)

如果所有这些实例总是相同的类型,那么选择第二个。它在语义上和直接上都更有效率。

答案 2 :(得分:-2)

std::vector<BaseClass*> values;

为什么要重新发明多态?

相关问题