Повышение векторов по сравнению с векторами STL - PullRequest
14 голосов
/ 09 июня 2011

Как boost::numeric::ublas::vector и std::vector сравниваются по эффективности во время выполнения?

Безопасно ли предполагать, что я могу преобразовать всю программу из std::vector в boost::numeric::ublas::vector, просто написав:

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

вместо #include<vector>? Могу ли я просто использовать векторы повышения, как если бы они были векторами STL во всех аспектах?

Работают ли функции из <algorithm> с векторами усиления? Они используют одни и те же итераторы?

Они работают в C ++ 0x? Они работают для циклов на основе диапазона?

Ответы [ 2 ]

22 голосов
/ 09 июня 2011

Это полностью ортогональные типы данных: первый представляет алгебраическое определение «вектора» (одномерная матрица), а последний представляет компьютерное определение «вектора» (одномерный массив).

Они не сравнивают.

9 голосов
/ 09 июня 2011

Вы должны использовать ublas :: vector только в том случае, если хотите выполнять операции линейной алгебры, такие как умножение матрицы на вектор и т. Д. Они не предоставляют такую ​​же функциональность и интерфейс, что и std :: vector.С точки зрения эффективности во время выполнения, я не знаю ничего, что могло бы превзойти std :: vector.

...