Search code examples
c++booststlvectorublas

Boost vectors versus STL vectors


How do boost::numeric::ublas::vector and std::vector compare in runtime efficiency?

Is it safe to assume that I can convert an entire program from using std::vector to use boost::numeric::ublas::vector just by writing:

#include <boost/numeric/ublas/vector.hpp>
using namespace boost::numeric::ublas;

instead of #include<vector>? Can I just use boost vectors as if they were STL vectors in all aspects?

Do functions from <algorithm> work with boost vectors? Do they use the same iterators?

Do they work in C++0x? Do they work for range based loops?


Solution

  • You should only use ublas::vector if you want to do linear algebra operations, such as matrix vector multiplication etc. They do not provide the same functionality nor the same interface as std::vector. In terms of run-time efficiency, there is nothing, that I know of, that beats std::vector.