0

私は C++ が初めてで、これが有効かどうか知りたいです。

文字列の配列を作成したいのですが、作業しているクラス内の関数に値が渡されるまで、必要な配列のサイズがわかりません。

string sList[];

void init(unsigned int size=1)
{
    sList = new string[size];

 }

これがばかげた質問であれば申し訳ありませんが、私は C++ を初めて使用する Java の男です。

編集: これは、配列ラッパー クラスの作成を伴う課題です。vector<> を使用できる場合は、信頼してください。

4

3 に答える 3

1

string sList[]のはずですが、これは正しいstring *sListです。最後に を忘れないdelete [] sListでください。

他の多くの人が言うように、必要に応じて使用できますstd::vectorが、配列を使って練習することは、メモリ管理がどのように機能するかを学ぶための優れた方法であり、さらに詳しく調べることをお勧めします.

于 2013-04-22T22:20:53.713 に答える
1

new 式( などnew string[size]) は、動的に割り当てられたオブジェクトへのポインターを返します。この場合、string動的に割り当てられた配列の最初のオブジェクトへのポインターを返します。したがって、これを機能させるにsListは、ポインターにする必要があります。

string* sList;

/で作成されたオブジェクトは常にdelete/でなければならないことを覚えておくことが重要です。したがって、ある時点でする必要があります。これを行わないと、s の配列に割り当てられたメモリは「決して」割り当て解除されません。delete[]newnew[]delete[] sListstring

std::vector<std::string>ただし、独自の動的割り当てを行うよりも、代わりにa を使用すると、はるかに良い状況になります。

于 2013-04-22T22:20:57.547 に答える
1

C++ でこれを行う正しい方法:

#include <string>
#include <vector>

std::vector<std::string> sList;

void init(unsigned int size = 1)
{
    sList.resize(size);
}

int main()
{
    init(25);
}
于 2013-04-22T22:21:29.097 に答える