Инициализация ускорения матрица с std :: vector или array

У меня есть метод, который принимает в качестве одного из параметров std :: vector. Есть ли способ инициализировать матрицу, назначив матрице std :: vector? Вот что я пытался сделать ниже. Кто-нибудь знает, как я могу добиться назначения вектора (или даже указателя двойников) матрице? Заранее спасибо. Майк

void Foo(std::vector v)
{
    matrix<double> m(m, n, v);
    // work with matrix...
}
7
задан user399540 13 November 2011 в 03:44
поделиться

1 ответ

Простой ответ, но не очень очевидный из документации Повышения.

можно просто использовать станд.:: 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

0
ответ дан 6 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: