C ++中的Vector2类

时间:2011-09-21 14:05:48

标签: c++ vector

在C ++中,是否有Vector2类,如果有,我需要包含什么来使用它?

我想用它来存储二维向量,例如粒子的位置或速度。

4 个答案:

答案 0 :(得分:5)

你走了。

struct Vector2
{
  float x;
  float y;
};

或者您可以使用std::pair<float, float>

然后,您将需要了解有关阵列结构(SOA)与结构阵列(AOS)以及它如何影响代码性能的更多信息。

粒子系统通常会采用SOA。

最后这里是series of blog posts on AOS & SOA applied to the implementation of a particle system

编辑:那里有很好的数学库,如Eigenglm,可以为你定义这些类型以及许多有用的算法(具有高效的实现)。

答案 1 :(得分:3)

没有&#34; vector2&#34;标准库中的类。 有一个适合您需求的对类,但对于这种情况,最好创建自己的向量类(因为那时你得到的变量名为x和y,而不是第一和第二),例如

class Vector2
{
public:
   double x;
   double y;

   Vector2( double x, double y);
   ... etc
}

然后,您可以重载运算符+,添加用于查找交叉/点积的函数等。

std :: vector类不是你需要的。 std :: vector类几乎只是C malloced数组的替代品。

答案 2 :(得分:0)

标题<utility>中有std::pair。但它不支持矢量运算。

答案 3 :(得分:-2)

你为什么不做矢量矢量?

std::vector<std::vector<YourType> > yourvector;

或者是对的矢量,

std::vector<std::pair<float, float> > yourvector;