Создание c_vector

Можно ли создать c_vector<int, 3> со значениями [12 398 -34] (как пример) в одну строку?

Так далеко как я могу видеть единственный жизнеспособный конструктор:

c_vector(vector_expression<AE> const&)

который занимает VectorExpressionкоторые, кажется, все другие виды векторов, такие как zero_vector а также scalar_vector которые динамически распределяются.

Есть ли что-то вроде std::initializer_list<T> конструктор, который я могу использовать? Или что VectorExpression я должен использовать для этой простой задачи?

4

Решение

Я наткнулся на это в assignment.hpp заголовок:

v <<= 1,2,3;

Я полагаю, что там могут быть более полезные методы, если вы посмотрите внимательно. Например.

vector<double> a(6, 0);
a <<= 1, 2, move_to(5), 3;

приведет к: 1 2 0 0 0 3 а также

matrix<double> A(3, 3, 0);
A <<= 1, 2, next_row(),
3, 4, begin1(), 1;

приведет к:

1 2 1
3 4 0
0 0 0

Жить на Колиру

#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_expression.hpp>
#include <boost/numeric/ublas/traits/c_array.hpp>
#include <boost/numeric/ublas/assignment.hpp>

namespace ublas = boost::numeric::ublas;

int main() {
using V = ublas::c_vector<int, 3>;

V v;
v <<= 1,2,3;

for (auto i : v)
std::cout << i << " ";
}

Печать

1 2 3
2

Другие решения


А ты уже прошел курс программирования? Супер скидка!
Прокачать скилл $$$
×