2012-11-23 58 views
0

可能重复:
Open source C++ library for vector mathematics向量运算

我已经做了很简单的问题:我该怎么办两个diffent喜欢和,差或产品的基本操作int vector,就像在matlab中一样,使用C++?是否存在可以做到的任何功能? 在此先感谢。

+0

可用于C++标准库有_many_ [算法函数(http://en.cppreference.com/w/cpp/algorithm)众多的东西。 –

+0

对于矢量到矢量的数学运算,在标准库中没有任何东西可以满足你的要求,但是对于许多操作来说,这些东西可以让你接近中途。查看标准算法并查看哪些可能适应。 – WhozCraig

回答

0

根据您的要求(你真的不细说),你可能会寻找从std::for_eachBoost::uBLAS什么...

+0

我只是想初始化向量和做数学运算,如:V1 = {0,1,2} V2 = {2,3,4} V1 + V2 = ????我知道这应该非常非常简单。 – tiavec88

+3

@ tiavec88:有一个标准模板'valarray',它可以像数学向量一样添加,但它没有很好的声誉,决不是一个完整的矩阵运算。 “std :: vector”与矢量的数学概念相比,可能不如你从名字中想到的。它实际上并没有定义一个向量空间。 Matlab是用于*数学的,在Matlab中有很多很简单的事情,但在标准C++库中没有提供。 –

1

没有在标准库中,你将不得不使用第三方库,我不知道你的要求是什么,但你可以看看像boost::ublas这样的东西。

0

使用std::accumulate积累一个单一的值,例如总产品或总产品。

使用std::inner_product以产生一值,它是在2个向量的值之间的二进制运算符的结果,和连续结果之间的二进制运算。如果你能正确地阐述你的问题,这是一个非常有用的功能。这与MapReduce有关。

虽然,也许你真正想要的是std::transform它可以在两个输入操作,并写入到第三输出。

0

你可以写你自己的类,如Vector类,类矩阵,在那里你重载运营商如+, - ,*。或者你可以使用图书馆像LAPACK,提高uBLAS库,...