2011-06-09 29 views
14

¿Cómo se comparan los modelos boost::numeric::ublas::vector y std::vector en la eficiencia del tiempo de ejecución?vectores Boost versus vectores STL

¿Es seguro asumir que puedo convertir un programa entero de usar std::vector utilizar boost::numeric::ublas::vector simplemente escribiendo:

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

en lugar de #include<vector>? ¿Puedo usar vectores boost como si fueran vectores STL en todos los aspectos?

¿Funcionan las funciones de <algorithm> con vectores de impulso? ¿Usan los mismos iteradores?

¿Funcionan en C++ 0x? ¿Funcionan para bucles basados ​​en rango?

+0

¿Qué pasa con 'std :: vector'? – Nim

Respuesta

9

Solo debe utilizar ublas :: vector si desea realizar operaciones de álgebra lineal, como la multiplicación vectorial de matriz, etc. No proporcionan la misma funcionalidad ni la misma interfaz que std :: vector. En términos de eficiencia de tiempo de ejecución, no hay nada, que yo sepa, que supere a std :: vector.

+0

¿Realmente? Porque estoy bastante seguro de listas vinculadas como std :: list beat vector para la inserción y eliminación de elementos. : p – wheaties

+0

@wheaties También pensé que sí, pero me sorprendió ver que el vector es generalmente bueno incluso para eso. –

+1

realmente depende del tamaño. La inserción en el medio de un enorme 'std :: vector' debe ser mucho más lenta que la inserción en el medio de una' std :: list' igualmente grande. – juanchopanza

22

Estos son tipos de datos completamente ortogonales: el primero representa la definición algebraica de 'vector' (una matriz unidimensional), mientras que el último representa la definición de 'vector' de la informática (una matriz unidimensional).

Ellos no comparar.

+0

¡Dioses! Busqué en todo el mundo pensando por qué no hay un 'push_back' en boost vector .. :) – Kashyap

+0

nota: los algoritmos stl aún funcionan. y puede usar aritmética al envolver funciones como 'plus_assign' en un http://www.data.google.com/spain/doc/libs/1_51_0/boost/numeric/ublas/functional.hpp –