Увеличение векторов по сравнению с векторами STL

Как сравнить 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> с векторами повышения? Используют ли они те же итераторы?

Работают ли они на С++ 0x? Они работают для циклов, основанных на диапазонах?

Ответы

Ответ 1

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

Ответ 2

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

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