分配给跨越的向量子集

时间:2014-12-12 10:33:35

标签: c++ matlab vector

说我有两个这样的矢量:

std::vector<std::vector<double> > A(2, std::vector<double>(6));
std::vector<double> B(3);

在Matlab中,我可以按如下方式定义A

A(1, 1:2:end) = B;
A(2, 2:2:end) = B; 

这样可以将B的元素首先分配到A[0][0]A[0][2]A[0][4],然后分配到A[1][1],{{1} },A[1][3]。例如,如果A[1][5]B,则{1, 4, 9}将为:

A

有没有办法在没有for循环的情况下在C ++中执行此操作?

1 个答案:

答案 0 :(得分:3)

您可能希望改为使用std::valarray

std::valarray<std::valarray<double>> A(std::valarray<double>(6), 2);
std::valarray<double> B{ 1, 4, 9 };
A[0][std::slice(0,B.size(),2)] = B;
A[1][std::slice(1,B.size(),2)] = B;

输出:

1   0   4   0   9   0   
0   1   0   4   0   9

DEMO