2

次のような構造の 3 つの異なるタイプの 3 次元ベクトルを作成する方法を見つけようとしています。

Vector[long][int][double];

次のような、単一のデータ型で 3d ベクトルを作成する方法を示す例がたくさん見つかりました。

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

しかし、複数のデータ型をベクトルに割り当てる方法を見つけるか、理解できるようになりました。

4

3 に答える 3

4

3 つの型すべてを同時に使用する場合は、構造体を使用する必要があります。

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]には意味がありません。何かのベクトルのベクトルのベクトルを持つことができます。結局のところ、何かの種類は 1 つだけです。

次元から一歩踏み出す。ベクトルの要素ごとに 3 つの値を含めようとしているだけの場合は、さまざまな方法でそれを行うことができます。3 つの値を含む型のベクトルを作成します。おそらく独自の構造体です。

于 2012-08-21T22:28:11.943 に答える
2

結局のところ、データ構造は何かを保持する必要があり、その何かは 1 つの型しか持つことができません。ここで、ベクトルの各場所に複数のデータ型を格納する場合、「何か」自体が複数の異なる型の構造体になる可能性があります。

もう少しコンテキストを提供すると役立ちます

于 2012-08-22T00:21:43.210 に答える