要素に3次元のベクトルを持つ4次元配列

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ひろき

要素に3次元のベクトルを持つ4次元配列

#1

投稿記事 by ひろき » 10年前

コード:

#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要素だけ記述しました.
その辺りも含めてどなたかご教授お願いします.

sleep

Re: 要素に3次元のベクトルを持つ4次元配列

#2

投稿記事 by sleep » 10年前

条件が
・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;
}

閉鎖

“C言語何でも質問掲示板” へ戻る