2015-05-17 6 views
4

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

Насколько I can see единственный жизнеспособный конструктор:

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

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

+1

http://stackoverflow.com/q/2742549 –

+0

@RobertHarvery Эмм. Простите, нет. Это не дубликат этого вопроса. 'std :: vector' и' boost :: numeric :: ublas :: c_vector' - совершенно разные звери. Да, ответы там используют Boost.Assign, которые могут быть или не быть релевантными здесь, но вопрос действительно в том, что здесь можно использовать «Векторное выражение». Рад тебя видеть. – Shoe

+0

@RobertHarvey Это буквально те же проблемы, что и вопрос, с которым вы закрыли вопрос. И я выделил их в своем предыдущем комментарии. – Shoe

ответ

2

Я наткнулся на это в заголовке 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 

Live On Coliru

#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 
+0

Я вижу. Моя проблема заключалась в строительстве больше, чем что-либо, хотя (возможность построить вектор с этими значениями). – Shoe

 Смежные вопросы

  • Нет связанных вопросов^_^