Увеличение векторов по сравнению с векторами 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
Это полностью ортогональные типы данных: первая представляет собой алгебраическое определение "вектор" (одномерная матрица), а последняя представляет собой определение компьютерной техники "вектор" (одномерный массив).
Они не сравниваются.