У меня есть метод, который принимает в качестве одного из параметров std :: vector. Есть ли способ инициализировать матрицу, назначив матрице std :: vector? Вот что я пытался сделать ниже. Кто-нибудь знает, как я могу добиться назначения вектора (или даже указателя двойников) матрице? Заранее спасибо. Майк
void Foo(std::vector v)
{
matrix<double> m(m, n, v);
// work with matrix...
}
Простой ответ, но не очень очевидный из документации Повышения.
можно просто использовать станд.:: vector<> как тип массива хранения данных обрабатывают пара-Мертер по шаблону вместо значения по умолчанию unbounded_array<> для Вашей матрицы. (Это упоминается в сноске 2 документации относительно matrix<> класс.)
void Foo(const std::vector<double> &v, size_t n)
{
using namespace boost::numeric::ublas;
size_t m = v.size() / n;
matrix< double, row_major, std::vector<double> > M(m, n);
M.data() = v;
// work with matrix...
}
[еще 117] варианты инициализации могут быть найдены в Вашем источнике повышения: boost/libs/numeric/ublas/doc/samples/assignment_examples.cpp, как указано здесь: присваивают несколько значений для повышения:: числовой:: ublas:: вектор в C++
Или здесь: uBLAS примеры , пример 3, который упоминается связанным вопросом: ublas: Перенесите ublas:: вектор как ublas:: matrix_expression