Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;最适合速度等物理矢量的数据类型_C++_Data Structures_Physics - Fatal编程技术网

C++ C++;最适合速度等物理矢量的数据类型

C++ C++;最适合速度等物理矢量的数据类型,c++,data-structures,physics,C++,Data Structures,Physics,初学者程序员在这里。我想找到C++中最好的数据结构来处理物理向量,比如位置、速度等。 目前我使用的是std::array,在整个程序中,维度都是固定的,但由于没有内置的算术运算,所以使用起来并不十分方便。我读过关于std::valarray的文章,但是很多参考文献都不鼓励使用它,而且像std::vector这样的东西并不是最优的,因为维度是固定的 有这样一种类型吗?或者我应该停止懒惰,让std::array操作符过载吗?你可以得到向量数学库,其中一些是免费的学术用途 滚动自己的并不困难,但您应该

初学者程序员在这里。我想找到C++中最好的数据结构来处理物理向量,比如位置、速度等。 目前我使用的是
std::array
,在整个程序中,维度都是固定的,但由于没有内置的算术运算,所以使用起来并不十分方便。我读过关于
std::valarray
的文章,但是很多参考文献都不鼓励使用它,而且像
std::vector
这样的东西并不是最优的,因为维度是固定的


有这样一种类型吗?或者我应该停止懒惰,让
std::array
操作符过载吗?

你可以得到向量数学库,其中一些是免费的学术用途

滚动自己的并不困难,但您应该创建自己的类,该类包含std::array或std::vector,提供可能需要的转发方法(如数组索引),并根据需要进行数学重载。理想情况下,它应该是一个模板类,如std::array,这样您就可以像当前一样在编译时指定维度


将运算符重载添加到整数类型的标准容器中不是一个好主意,因为您永远不知道您可能编译的其他哪些代码恰好包含相同的容器,并且会发生冲突。

您可以获得向量数学库,其中一些是免费的学术用途

滚动自己的并不困难,但您应该创建自己的类,该类包含std::array或std::vector,提供可能需要的转发方法(如数组索引),并根据需要进行数学重载。理想情况下,它应该是一个模板类,如std::array,这样您就可以像当前一样在编译时指定维度


将运算符重载添加到整数类型的标准容器中不是一个好主意,因为您永远不知道您可能编译的其他哪些代码恰好包含相同的容器,并且会发生冲突。

如果您使用的是GCC,则可以使用

示例-:

#包括
#包括
typedef double v4d uuuuu属性uuuu((uuu向量u大小uuuuuuf(double)*4));
int main(){
v4d x{1,2,12};
v4d y{3,4,2};
自动z=1.5+x*y;
对于(尺寸i=0;i<3;++i)

std::cout如果您使用的是GCC,那么您可以使用

示例-:

#包括
#包括
typedef double v4d uuuuu属性uuuu((uuu向量u大小uuuuuuf(double)*4));
int main(){
v4d x{1,2,12};
v4d y{3,4,2};
自动z=1.5+x*y;
对于(尺寸i=0;i<3;++i)

std::cout您可以使用它来创建自己的类,例如“vector”类,该类实现对向量的适当操作。然后,该“vector”类可以在内部使用例如
std::array
来存储数据(或使用离散变量)。这是其他物理框架中的一个常见概念。重载内置类的运算符是一个相当糟糕的主意。在本例中,编写自己的结构是您想要的,它可以在内部包装数组。或者,考虑到物理和对它的仿真或模拟变得非常普遍,有相当多的库和框架ks已经可以使用了。快速搜索应该可以找到其中的大部分。您可以使用它来创建自己的类,例如“vector”类,该类实现对向量的适当操作。然后该“vector”类可以在内部使用例如
std::array
来存储数据(或使用离散变量)。这是其他物理框架中的一个常见概念。重载内置类的运算符是一个相当糟糕的主意。在本例中,编写自己的结构是您想要的,它可以在内部包装数组。或者,考虑到物理和对它的仿真或模拟变得非常普遍,有相当多的库和框架ks已经可以使用了。快速搜索应该可以找到其中的大部分。