2

我正在尝试找到一种方法来创建具有三种不同类型的 3 维向量,其结构如下:

Vector[long][int][double];

我发现了很多例子来展示如何创建一个具有单一数据类型的 3d 矢量,例如:

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

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

4

3 回答 3

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
于 2012-08-21T22:28:36.460 回答
3

从概念上讲Vector[long][int][double]没有任何意义。您可以拥有某事物的向量的向量。最后只有一种类型的东西

迈出维度的一步。如果您只是想在向量中的每个元素包含 3 个值,您可以通过多种方式做到这一点。制作一个包含您的 3 个值的类型的向量:可能是您自己的结构。

于 2012-08-21T22:28:11.943 回答
2

归根结底,您的数据结构必须包含一些东西,而这些东西只能是一种类型。现在,如果您想在向量的每个位置存储多种数据类型,您的“某物”本身可以是多种不同类型的结构。

如果您提供更多上下文会有所帮助

于 2012-08-22T00:21:43.210 回答