我正在存储一个值向量,这些值可以在运行时确定不同的类型。这些值将始终与每个实例的类型相同。
哪种更好的做法?为什么呢?
std::vector< boost::variant<int, std::string, double> > values;
OR
boost::variant< std::vector<int>, std::vector<string>, std::vector<double> > values;
答案 0 :(得分:2)
前者,因为它可以节省打字并且更灵活;你的规格可能会改变。
后者,因为它提供了更强的保证,在内存使用方面更紧凑,因此可能更快。
根据您的需要选择。
答案 1 :(得分:1)
如果所有这些实例总是相同的类型,那么选择第二个。它在语义上和直接上都更有效率。
答案 2 :(得分:-2)
std::vector<BaseClass*> values;
为什么要重新发明多态?