JavaのArrayListsに似たオブジェクトの動的配列を作成しようとしています。私はC++で新しく、動作させることができません。C++でのオブジェクトの動的配列
class Album{
private:
public:
void addPhoto(Photo p){
}
};
私のプライベートデータメンバーはどのようなものになるはずですし、どのように私はそれにp
を追加するには?何らかの理由でポインタが必要ですか?
JavaのArrayListsに似たオブジェクトの動的配列を作成しようとしています。私はC++で新しく、動作させることができません。C++でのオブジェクトの動的配列
class Album{
private:
public:
void addPhoto(Photo p){
}
};
私のプライベートデータメンバーはどのようなものになるはずですし、どのように私はそれにp
を追加するには?何らかの理由でポインタが必要ですか?
あなたが探している機能は、すでにstl collection classesにあります。アプリケーションを知っているうちに、ポインタが必要かどうかを気にする必要があります。
基礎となるコンテナの基本レイアウトは、このようなものになります。
class Album{
public:
void addPhoto(Photo p){
Photos.push_back(p);
}
private:
std::vector<Photo> Photos;
};
あなたはもともとクラスメンバーのアンダースコア(つまり '_Photos')をどこに入れたか分かりましたが、(C++ Coding Standards)の本で普及したような(' Photos_') 。 –
私は答えが気に入っていますが、 '_Photo'を使ってはいけません。これを参照してください理由:http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier Photo_としてそれを見てうれしい。 – Chad
私はちょうど習慣を働く現在のコーディング標準です。私はintelisenseのためにそれが好きです。他の仕事で私たちはm_ _をしたか、まったく表記をしていません。ハンガリーの表記法が厳しく枯渇しているMSの店では、より一般的に感じられます。 – rerun
std::vectorを使用してください。
ArrayListと非常によく似た組み込みのstd :: vectorクラスを使用できます。
@fontaniniはあなたに良い答えを与えました。オブジェクトの動的配列が必要な場合は、ベクターを使用する必要があります。
しかし、まずクラスを作成する必要はありません。あなたが本当に必要でない限り、C++のすべてをクラスにカプセル化する必要はありません。
データ構造と要件について考えてみましょう。 STLの優れたビデオ講義があり
あなたはSTLになります。あなたは他のコンテナとその機能、制限事項と目的を理解するために、標準C++ライブラリとSTLについての詳細を学びたいと思うかもしれません;さまざまなコンテナタイプがあります( 'vector'はここで気になるものですが、あなたの問題に適したものが他にもあるかもしれません)。 –
ヒープスペースの割り当てに注意してください。 Albumオブジェクトが大きくなる場合は、新しいもので割り当てる方が良いかもしれません。 –