创建 c_vector
Creating a c_vector
是否可以在一行中创建一个值为 [12 398 -34]
的 c_vector<int, 3>
(作为示例)?
就I can see而言,唯一可行的构造函数是:
c_vector(vector_expression<AE> const&)
需要一个 VectorExpression
,它似乎是所有其他类型的向量,例如动态分配的 zero_vector
和 scalar_vector
。
是否有类似 std::initializer_list<T>
构造函数的东西可供我使用?或者我应该使用什么 VectorExpression
来完成这个简单的任务?
我在 assignment.hpp
header:
中偶然发现了这个
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
是否可以在一行中创建一个值为 [12 398 -34]
的 c_vector<int, 3>
(作为示例)?
就I can see而言,唯一可行的构造函数是:
c_vector(vector_expression<AE> const&)
需要一个 VectorExpression
,它似乎是所有其他类型的向量,例如动态分配的 zero_vector
和 scalar_vector
。
是否有类似 std::initializer_list<T>
构造函数的东西可供我使用?或者我应该使用什么 VectorExpression
来完成这个简单的任务?
我在 assignment.hpp
header:
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