配列
C++/CLIの配列は[ ]ではなく、arrayキーワードを使います・・・って、もう何度も使っているので今更感漂いますが。(^^;
#include "stdafx.h" #include <cstdio> using namespace System; void print_array(array<int>^ args) { for each (int n in args) printf("%d ", n); printf("\n"); } void print_array(array<int, 2>^ args) { for (int i = 0; i < args->GetLength(0); ++i) { for (int j = 0; j < args->GetLength(1); ++j) printf("%d ", args[i, j]); printf("\n"); } } void print_array(array<array<int>^>^ args) { for (int i = 0; i < args->Length; ++i) { for (int j = 0; j < args[i]->Length; ++j) printf("%d ", args[i][j]); printf("\n"); } } // 可変引数(C#のparams相当) void varargs_func(... array<int>^ args) { print_array(args); } int main(array<System::String ^> ^args) { // int型、要素数3の配列。初期値は0 array<int>^ a0 = gcnew array<int>(3); // 初期値あり array<int>^ a1 = {1, 2, 3}; // 最後に,があってもよい array<int>^ a2 = {4, 5, 6,}; puts("#a0"); print_array(a0); puts("#a1"); print_array(a1); puts("#a2"); print_array(a2); // array<型, 次元> // 2x3配列 array<int, 2>^ b0 = gcnew array<int, 2>(2, 3); // 2x3配列。初期値あり array<int, 2>^ b1 = {{1,2,3}, {4, 5, 6}}; // 2x3配列。値の不足しているところは0が補われる array<int, 2>^ b2 = {{7}, {8, 9, 0}}; puts("#b0"); print_array(b0); puts("#b1"); print_array(b1); puts("#b2"); print_array(b2); // ジャグ配列 array<array<int>^>^ c1 = {{1}, {2,3,4}, {5, 6}}; puts("#c1"); print_array(c1); // 可変引数 puts("#varargs"); varargs_func(9, 8, 7, 6, 5, 4, 3, 2, 1, 0); return 0; } /* 結果 #a0 0 0 0 #a1 1 2 3 #a2 4 5 6 #b0 0 0 0 0 0 0 #b1 1 2 3 4 5 6 #b2 7 0 0 8 9 0 #c1 1 2 3 4 5 6 #varargs 9 8 7 6 5 4 3 2 1 0 */