我需要创建一个向量的向量(确切地说是三个向量的向量)。每个组成部分的向量都是不同的数据类型(字符串、双精度和自定义数据类型)。在C++中是否可以实现这一点?如果不行,有没有其他更优雅的方法来满足我的需求?
如果您知道它们有三个,而且您知道它们的类型,为什么不编写一个类呢?
class Data
{
std::vector<std::string> _strings;
std::vector<double> _doubles;
std::vector<UserDefined> _userDefined;
public:
// ...
};
在我看来,一堆不相关的东西组成的向量似乎缺乏明确的语义,所以这种写法也会增强语义。
std::vector< boost::tuples<std::string, double, YourType> >
。如果您没有安装boost(http://www.boost.org/doc/libs/1_46_0/libs/tuple/doc/tuple_users_guide.html),则在最近的C++标准库中支持`tuples`,位于`tr1`命名空间下(http://msdn.microsoft.com/en-us/library/bb982771.aspx)。 - yasousertemplate<typename T> struct inner_vectors {
std::vector<double> double_vector;
std::vector<std::string> string_vector;
std::vector<T> user_vector;
};
std::vector<inner_vectors<some_type>> vector_of_vectors;
你是指这个吗?
vector<tuple<vector<string>, vector<double>, vector<T> > >