arrayはcliが提供する配列です。以下の機能があります。
int型のarrayを要素数4で作る場合は以下のようにします。
array<int>^ a = gcnew array<int>(4); array<int>^ b = gcnew array<int>(4) {1,2,3,4}; array<int>^ c = gcnew array<int>{1,2,3,4};
arrayは常にハンドルを用いて利用しなければなりません。またarrayの型にref classを用いることはできず、ref classのハンドルを用いなければなりません。
array<Object>^ oa ; // エラー array<Object^>^ oa ; // OK
arrayの要素数を知るには、Lengthを使います。
array<int>^ c = gcnew array<int>{1,2,3,4}; int len = c->Length;
for eachを以下のようにして使えます。
array<int>^ c = gcnew array<int>{1,2,3,4}; for each(int i in c) { System::Console::WriteLine(i); }
これは以下と同じです。
array<int>^ c = gcnew array<int>{1,2,3,4}; for ( int i=0 ; i < c->Length; ++i ) { System::Console::WriteLine(c[i]); }
2次元arrayは以下のように作ります。
array<int,2>^ a2 = gcnew array<int,2>(4,4); array<int,2>^ b2 = gcnew array<int,2>{ {1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4} };
System::Arrayのメソッドでarrayを色々する。
#include "stdafx.h" using namespace System; void printout(int i) { Console::WriteLine(i); } int conv(int i) { return i*2; } bool pred(int i) { return i==4; } int main(array<System::String ^> ^args) { array<int>^ ia = gcnew array<int>{1,2,3,4,5}; Array::Reverse(ia); Array::Sort(ia); Array::ForEach<int>(ia, gcnew Action<int>(printout)); array<int>^ ia2 = Array::ConvertAll(ia, gcnew Converter<int,int>(conv)); Array::ForEach<int>(ia2, gcnew Action<int>(printout)); int i4 = Array::Find(ia2, gcnew Predicate<int>(pred)); return 0; }