![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0 |
コレクションクラスには、4 バイトより大きなオブジェクトを直接格納することはできません。
![]() |
例外 |
|---|---|
例外として、SFXHashmap クラスに SFXAnsiString、SFXWideString を格納するのは可能です。 | |
代わりにオブジェクトへのポインタを格納します。
定義
// SFXAnsiString を格納する可変長配列 (SFXArray) の定義 // SFXAnsiString を指すポインタを格納する SFXArray<SFXAnsiStringPtr> array;
要素の追加
// SFXAnsiString を動的に生成 SFXAnsiStringPtr str = new SFXAnsiString("abc"); // ポインタを格納 array.Append(str); // 直接記述できる array.Append(new SFXAnsiString("def"));
要素の取得、設定
// 前から 2 番目の要素を取得 SFXAnsiStringPtr str = array[1]; // 表示 TRACE("%s", str->GetCString()); // 直接表示 TRACE("%s", array[1]->GetCString()); // 要素の設定 // 直接 array[0] = new SFXAnsiString("ghi"); とするとメモリリークを起こす delete array[0]; // 動的に生成した配列は delete する必要がある array[0] = new SFXAnsiString("ghi");
要素数の取得
SInt32 n = array.GetSize(); // n は 2 となる
一部削除
// array[3] から array[4] までを削除 (array[5] までではない)
SInt32 i;
for (i = 3; i < 5; ++i) {
delete array[i];
}
array.Remove(3, 5);
全削除
SFXArray<SFXAnsiStringPtr>::Iterator iterator = array.GetIterator();
while (iterator.HasNext()) {
SFXAnsiStringPtr str = iterator.GetNext();
delete str;
}
array.Clear(); // array は空となる
検索・存在判定
// SInt32 n1 = array.IndexOf("abc"); 不可 // SInt32 n2 = array.IndexOf(new SFXAnsiString("abc")); 不可 // 以下のように書く必要がある SFXArray<SFXAnsiStringPtr>::Iterator iterator = array.GetIterator(); while (iterator.HasNext()) { SFXAnsiStringPtr str = iterator.GetNext(); if (str->Equals("abc")) { return true; } } return false;
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|