带矢量矢量的多种数据类型

时间:2012-08-21 22:22:57

标签: c++ arrays vector types

我试图找到一种方法来创建一个具有三种不同类型的三维向量,这样它的结构如下:

Vector[long][int][double];

我找到了大量示例,展示了如何使用单一数据类型创建3d矢量,例如:

std::vector<vector<vector<int> > >;

但我现在可以找到或弄清楚如何为矢量分配多种数据类型。

3 个答案:

答案 0 :(得分:4)

如果您希望同时使用所有三种类型,则应使用结构。

struct Vector3d{
  long x;
  int y;
  double z;
};
//... or a union, if each entry only contains one type.
union NumberContainer
{
  long x;
  int y;
  double z;
};
std::vector<Vector3d> vector1;//Vector of three types
std::vector<NumberContainer> vector2;//Vector that can contain one of three types per entry
vector1[0].x=1;
vector1[0].y=2;
vector1[0].z=3;
//vector1 contains... x=1, y=2,z= 3
vector2[0].x=1;
vector2[0].y=2;
vector2[0].z=3;
//vector2 contains x=undefined, y=undefined, z=3

答案 1 :(得分:3)

概念上Vector[long][int][double]没有任何意义。你可以有一个某种矢量向量的向量。最后只有一种某种

走出维度。如果您只想在向量中为每个元素包含3个值,则可以通过多种方式执行此操作。创建一个包含3个值的类型的向量:可能是您自己的结构。

答案 2 :(得分:2)

在一天结束时,您的数据结构必须包含某物,并且某些内容只能是一种类型。现在,如果你想在你的矢量的每个位置存储多种数据类型,你的&#34;东西&#34;它本身可以是多种不同类型的结构。

如果你提供了更多的背景,那会有所帮助