wxArrayString

wxArrayString は効率よく wxString を格納するコンテナです。 このクラスはすべての wxArray と同じ特徴を持ちます。 つまり、新しい要素を追加するときに動的に拡大します (そのため、リンクリストと同じくらい使いやすいです) が、 要素へのアクセスは定数時間で、リンクリストのように要素数に比例しません。 また、サイズも効率的で、 C 言語の配列である wxString[] 型以上に 領域を取りません (これを実現するために wxArrayString は wxString クラスの内部情報を使用します)。
wxArrayString is an efficient container for storing wxString objects. It has the same features as all wxArray classes, i.e. it dynamically expands when new items are added to it (so it is as easy to use as a linked list), but the access time to the elements is constant, instead of being linear in number of elements as in the case of linked lists. It is also very size efficient and doesn't take more space than a C array wxString[] type (wxArrayString uses its knowledge of internals of wxString class to achieve this).
このクラスは WX_DEFINE_ARRAY による宣言が必要ないことを除くと 他の動的な 配列 と同じように使用できます。 文字列を配列に追加または挿入するときには文字列のコピーが作られるので、 元の文字列は安全に削除できます (例えば wxChar * の場合、追加または挿入の後にメモリをすぐに解放できます)。 一般的に、このクラスを使用するときは文字列のメモリ解放について心配する必要はありません。 このクラスが使用するメモリは常に自分で解放します。
This class is used in the same way as other dynamic arrays, except that no WX_DEFINE_ARRAY declaration is needed for it. When a string is added or inserted in the array, a copy of the string is created, so the original string may be safely deleted (e.g. if it was a wxChar * pointer the memory it was using can be freed immediately after this). In general, there is no need to worry about string memory deallocation when using this class - it will always free the memory it uses itself.
ItemLastoperator[] によって返される参照は const ではありません。 そのため、配列の要素は次のようにして変更できます。
The references returned by Item, Last or operator[] are not constant, so the array elements may be modified in place like this
    array.Last().MakeUpper();
また、 wxSortedArrayString と呼ばれる wxArrayString の変化形もあります。 これは wxArrayString とまったく同じ関数を持ちますが、 常に要素の文字列を (アルファベット) 順に保ちます。 wxSortedArrayString は Index 関数で (wxArrayString::Index による線形探索のかわりに) 二分探索を使用するため、 あまり文字列を追加することがなく (もちろん Index() を効率的にする代償として Add() が遅くなるためです)、頻繁に検索する場合にとても効率的になります。 いくつかの関数はソート済み配列で使用するべきではありません (基本的に、要素の順番を変える関数すべてです)。 その関数の解説でこのことに触れます。
There is also a variant of wxArrayString called wxSortedArrayString which has exactly the same methods as wxArrayString, but which always keeps the string in it in (alphabetical) order. wxSortedArrayString uses binary search in its Index function (instead of linear search for wxArrayString::Index) which makes it much more efficient if you add strings to the array rarely (because, of course, you have to pay for Index() efficiency by having Add() be slower) but search for them often. Several methods should not be used with sorted array (basically, all which break the order of items) which is mentioned in their description.
最後に: デストラクタを含めて、関数はすべて virtual ではありません。 そのため、このクラスを基底クラスとして使用するべきではありません。
Final word: none of the methods of wxArrayString is virtual including its destructor, so this class should not be used as a base class.

継承元
Derived from

厳密に言えば正しくありませんが、このクラスは wxString を要素とする wxArray クラスの 特殊化と考えることができるかもしれません: このようには実装されていませんが、 wxArray クラスの関数をすべて持っています。
Although this is not true strictly speaking, this class may be considered as a specialization of wxArray class for the wxString member data: it is not implemented like this, but it does have all of the wxArray functions.

インクルードファイル
Include files

<wx/arrstr.h>

参照
See also

wxArraywxStringwxString の概要
wxArray, wxString, wxString overview

メンバ
Members


wxArrayString::wxArrayString

wxArrayString()
デフォルトコンストラクタ。
Default constructor.
wxArrayString(const wxArrayString& array)
コピーコンストラクタ。 配列をソート済み配列に代入すると、 コンストラクタの中で要素が自動的にソートされることに注意してください。
Copy constructor. Note that when an array is assigned to a sorted array, its contents is automatically sorted during construction.
wxArrayString(size_t sz, const wxChar** arr)
C 言語の文字列配列によるコンストラクタ。 サイズ sz と配列 arr を渡してください。
Constructor from a C string array. Pass a size sz and array arr.
wxArrayString(size_t sz, const wxString* arr)
wxString の配列によるコンストラクタ。 サイズ sz と配列 arr を渡してください。
Constructor from a wxString array. Pass a size sz and array arr.

wxArrayString::~wxArrayString

~wxArrayString()
デストラクタは文字列配列が占めるメモリを解放します。 パフォーマンス上の理由からデストラクタは virtual ではありません。 そのため、このクラスから派生するべきではありません。
Destructor frees memory occupied by the array strings. For the performance reasons it is not virtual, so this class should not be derived from.

wxArrayString::operator=

wxArrayString & operator =(const wxArrayString& array)
代入演算子。
Assignment operator.

wxArrayString::operator==

bool operator ==(const wxArrayString& array) const
2 つの配列を大文字小文字を考慮して比較します。 2 つの配列が同じ数の要素を持ち、同じ文字列を同じ順番で持つ場合のみ true を返します。
Compares 2 arrays respecting the case. Returns true only if the arrays have the same number of elements and the same strings in the same order.

wxArrayString::operator!=

bool operator !=(const wxArrayString& array) const
2 つの配列を大文字小文字を考慮して比較します。 2 つの配列が異なる数の要素を持つか、 対となる要素同士が一致しない場合に true を返します。
Compares 2 arrays respecting the case. Returns true if the arrays have different number of elements or if the elements don't match pairwise.

wxArrayString::operator[]

wxString& operator[](size_t nIndex)
nIndex の位置の要素を返します。 デバッグモードでは配列の終端を越えて要素にアクセスしようとすると assert の失敗が起こります。 しかし、リリースモードではチェックしません。
Return the array element at position nIndex. An assert failure will result from an attempt to access an element beyond the end of array in debug mode, but no check is done in release mode.
これは Item 関数の演算子版です。
This is the operator version of Item method.

wxArrayString::Add

size_t Add(const wxString& str, size_t copies = 1)
配列に新しい要素 strcopies 個追加し、 新しい要素の中で一番前にくる要素の位置を返します。
Appends the given number of copies of the new item str to the array and returns the index of the first new item in the array.
注: ソート済み配列において、要素が挿入される位置は一般的に GetCount() - 1 と等しくありません。 なぜなら、要素は配列のソート順を保てる適切な位置に挿入されるのであって、 末尾に追加されるわけではないためです。
Warning: For sorted arrays, the index of the inserted item will not be, in general, equal to GetCount() - 1 because the item is inserted at the correct position to keep the array sorted and not appended.
参照: Insert
See also: Insert

wxArrayString::Alloc

void Alloc(size_t nCount)
nCount 個の要素を格納するのに十分なメモリをあらかじめ確保します。 この関数は配列の性能を上げるために、既知の数の要素を連続して追加する前に使用してください。
Preallocates enough memory to store nCount items. This function may be used to improve array class performance before adding a known number of items consecutively.
参照: 動的配列におけるメモリ管理
See also: Dynamic array memory management

wxArrayString::Clear

void Clear()
配列の内容を削除し、メモリを解放します。
Clears the array contents and frees memory.
参照: Empty
See also: Empty

wxArrayString::Count

size_t Count() const
配列内の要素数を返します。 この関数は非推奨で、後方互換性のためだけに存在します。 代わりに GetCount を使用してください。
Returns the number of items in the array. This function is deprecated and is for backwards compatibility only, please use GetCount instead.

wxArrayString::Empty

void Empty()
配列を空にします: この関数の呼び出しの後、 GetCount は 0 を返します。 しかし、この関数は使用していたメモリを解放しないため、 メモリは他の文字列を格納するときに再び使用されます。 そうでなければ Clear を使用することで 配列を空にしてメモリを解放することができます。
Empties the array: after a call to this function GetCount will return 0. However, this function does not free the memory used by the array and so should be used when the array is going to be reused for storing other strings. Otherwise, you should use Clear to empty the array and free memory.

wxArrayString::GetCount

size_t GetCount() const
配列内の要素数を返します。
Returns the number of items in the array.

wxArrayString::Index

int Index(const wxChar * sz, bool bCase = true, bool bFromEnd = false)
bFromEnd が false なら配列の先頭から、 そうでなければ終端から要素を検索します。 bCase が真 (デフォルト) なら大文字小文字を区別し、 そうでなければ無視します。
Search the element in the array, starting from the beginning if bFromEnd is false or from end otherwise. If bCase, comparison is case sensitive (default), otherwise the case is ignored.
この関数は wxArrayString では線形探索を、 wxSortedArrayString では二分探索を使用します。 しかし、 wxSortedArrayString では bCasebFromEnd は無視されます。
This function uses linear search for wxArrayString and binary search for wxSortedArrayString, but it ignores the bCase and bFromEnd parameters in the latter case.
最初に見つかった要素の位置か、見つからなかった場合は wxNOT_FOUND を返します。
Returns index of the first item matched or wxNOT_FOUND if there is no match.

wxArrayString::Insert

void Insert(const wxString& str, size_t nIndex, size_t copies = 1)
nIndex 番目の要素の前に copies 個の 新しい要素を挿入します。 したがって、例えば文字列を配列の先頭に挿入するには次のように書きます。
Insert the given number of copies of the new element in the array before the position nIndex. Thus, for example, to insert the string in the beginning of the array you would write
Insert("foo", 0);
nIndexGetCount() と等しい場合、 この関数は Add のように振る舞います。
If nIndex is equal to GetCount() this function behaves as Add.
注: この関数は要素の順番を変更するため、ソート済み配列で使用するべきではありません。 例えば、その後の Index() の呼び出しは うまく動作しないでしょう!
Warning: this function should not be used with sorted arrays because it could break the order of items and, for example, subsequent calls to Index() would then not work!

wxArrayString::IsEmpty

bool IsEmpty()
配列が空なら true を、そうでなければ false を返します。 この関数は GetCount() == 0 と同じ結果を返しますが、 おそらくこちらの方が分かりやすいでしょう。
Returns true if the array is empty, false otherwise. This function returns the same result as GetCount() == 0 but is probably easier to read.

wxArrayString::Item

wxString& Item(size_t nIndex) const
nIndex の位置の要素を返します。 デバッグモードでは配列の終端を越えて要素にアクセスしようとすると assert の失敗が起こります。 しかし、リリースモードではチェックしません。
Return the array element at position nIndex. An assert failure will result from an attempt to access an element beyond the end of array in debug mode, but no check is done in release mode.
演算子版の operator[] も参照してください。
See also operator[] for the operator version.

wxArrayString::Last

wxString& Last()
配列の最後の要素を返します。 デバッグモードでは空配列の最後の要素にアクセスしようとすると assert の失敗が起こります。 しかし、リリースモードではチェックしません。
Returns the last element of the array. Attempt to access the last element of an empty array will result in assert failure in debug build, however no checks are done in release mode.

wxArrayString::Remove

void Remove(const wxChar * sz)
一致する最初の要素を削除します。 デバッグモードでは存在しない要素を削除しようとすると assert の失敗が起こります。
Removes the first item matching this value. An assert failure is provoked by an attempt to remove an element which does not exist in debug build.
参照: Index
See also: Index

wxArrayString::RemoveAt

void RemoveAt(size_t nIndex, size_t count = 1)
nIndex 番目から count 個の要素を削除します。
Removes count items starting at position nIndex from the array.

wxArrayString::Shrink

void Shrink()
配列が確保している余分なメモリを解放します。 この関数は配列のメモリ消費量を最小にするのに役立ちます。
Releases the extra memory allocated by the array. This function is useful to minimize the array memory consumption.
参照: Alloc, 動的配列におけるメモリ管理
See also: Alloc, Dynamic array memory management

wxArrayString::Sort

void Sort(bool reverseOrder = false)
配列をアルファベット順、または reverseOrder が true の場合は その逆順にソートします。 ソートは大文字小文字を区別します。
Sorts the array in alphabetical order or in reverse alphabetical order if reverseOrder is true. The sort is case-sensitive.
注: この関数は要素の順番を変更するため、ソート済み配列で使用するべきではありません。 例えば、その後の Index() の呼び出しは うまく動作しないでしょう!
Warning: this function should not be used with sorted array because it could break the order of items and, for example, subsequent calls to Index() would then not work!
void Sort(CompareFunction compareFunction)
指定された compareFunction を比較に使用してソートします。 CompareFunctionconst wxString & 型の 引数を 2 つ取り、 int を返す関数として定義されています。 最初の文字列が 2 番目の文字列よりも小さい場合は負の値を、等しい場合は 0 を、 大きい場合は正の値を返します。
Sorts the array using the specified compareFunction for item comparison. CompareFunction is defined as a function taking two const wxString& parameters and returning an int value less than, equal to or greater than 0 if the first string is less than, equal to or greater than the second one.


Example

以下の例では文字列をその長さでソートします。
The following example sorts strings by their length.
static int CompareStringLen(const wxString& first, const wxString& second)
{
    return first.length() - second.length();
}
...
wxArrayString array;
array.Add("one");
array.Add("two");
array.Add("three");
array.Add("four");
array.Sort(CompareStringLen);
注: この関数は要素の順番を変更するため、ソート済み配列で使用するべきではありません。 例えば、その後の Index() の呼び出しは うまく動作しないでしょう!
Warning: this function should not be used with sorted array because it could break the order of items and, for example, subsequent calls to Index() would then not work!