在C ++中,是否有Vector2类,如果有,我需要包含什么来使用它?
我想用它来存储二维向量,例如粒子的位置或速度。
答案 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。
答案 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;