ページ 1 / 1
要素に3次元のベクトルを持つ4次元配列
Posted: 2014年10月06日(月) 20:05
by ひろき
コード:
#include <iostream>
#include <boost/numeric/ublas/vector.hpp>
int main () {
boost::numeric::ublas::vector<double> v[1][2][3][4];
v[0][1][2][3] = boost::numeric::ublas::vector<double>(3);
}
それぞれの要素に3次元のベクトルを持つ4次元配列はこの様な実装で良いのでしょうか…….
実際はfor文で回そうとしたんですがうまく動作しなくて取り敢えず1要素だけ記述しました.
その辺りも含めてどなたかご教授お願いします.
Re: 要素に3次元のベクトルを持つ4次元配列
Posted: 2014年10月07日(火) 08:11
by sleep
条件が
・3次元ベクトルは、3次元で固定
・4次元配列は、3次元ベクトルの配列であり、しかも固定
であれば、以下のようになります。
コード:
#include <iostream>
#include <boost/numeric/ublas/vector.hpp>
int main()
{
boost::numeric::ublas::c_vector<double, 3> v[1][2][3][4];
v[0][0][0][0](0) = 1.2;
v[0][0][0][0](1) = 2.2;
v[0][0][0][0](2) = 3.2;
std::cout << v[0][0][0][0](0) << std::endl;
std::cout << v[0][0][0][0](1) << std::endl;
std::cout << v[0][0][0][0](2) << std::endl;
for (int i = 0; i < 1; i++)
for (int j = 0; j < 2; j++)
for (int k = 0; k < 3; k++)
for (int l = 0; l < 4; l++) {
v[i][j][k][l](0) = i + j + k + l + 1;
v[i][j][k][l](1) = i + j + k + l + 2;
v[i][j][k][l](2) = i + j + k + l + 3;
}
for (int i = 0; i < 1; i++)
for (int j = 0; j < 2; j++)
for (int k = 0; k < 3; k++)
for (int l = 0; l < 4; l++) {
std::cout << v[i][j][k][l](0) << ", ";
std::cout << v[i][j][k][l](1) << ", ";
std::cout << v[i][j][k][l](2) << std::endl;
}
std::cin.ignore();
return 0;
}