配列であるメンバーを持つクラスがあるとしましょう。次のように、構築時/実行時にそのサイズを定義することは可能ですか?
class myClass {
private:
int myArray[n]
public:
myClass();
someOtherMethod();
};
ここで、nはユーザー入力に基づいて定義される変数です。そうでない場合、最良の選択肢は何でしょうか?
場合によります。
意味的には、3つのタイプのアレイがあります。
C ++は、通常の配列とstd::vector
クラスで、それぞれ1番目と3番目のケースを直接サポートします。
Cは、2つの構成を持つ2番目のタイプもサポートします。
C ++では、このstd::vector
クラスを使用することをお勧めします。必要以上のものを提供しますが、使い方は簡単です。
一方、C ++でも、テールパディングを使用できます。ただし、注意深いエンジニアリングが必要です。
ベクトルを使用します。
class myClass {
private:
std::vector<int> myArray;
public:
myClass();
someOtherMethod();
};
myClass::myClass (int size)
: myArray (size)
{
...
}
次に、配列と同じようにベクトルを入力できます。または、Nawazが指摘しているように、reserve()
新しい要素用のスペースを予約する、および/またはpush_back()
要素を一度に1つずつ背面に追加するを使用します。
クラステンプレートstd::vector
は、この目的のために設計されています。
class myClass {
private:
std::vector<int> myArray;
public:
myClass(int size);
someOtherMethod();
};
myClass::myClass(int size) : myArray(size)
{
}