2016-08-03 27 views
-1

私は質問をする前に、このトピックが多く議論されていることを認識していることを前もって言及しておきますが、ほとんどの回答を見ても、私が欲しいものを達成してください(おそらく、私が与えられたアンウォーズから逃げたからです)。 だから、グローバルスコープでなければならないオブジェクトのベクトルの20倍のサイズ(それぞれ10のサイズ)を作成したいとします(これはクラス内で行われ、オブジェクトのベクトルをクラス)。オブジェクトのベクトルの初期化

for (int i =0; i<20; i++) 
vector<A> * vec_of_class = new vector<A>(10); 
/*where A is the class and I use new to have them in the heap, 
so that they won't be local */ 

は今、私はこれは私がそれら を処理し、私はそれらを削除preperていることを確認しますと、余分な気をつけなければならないことを意味していることを知っているが、私は: だから、私は以下のが有効であるかどうか、本当にわかりません私が行っている操作が有効かどうかわからない。一般的に私はグローバルスコープ(操作は他のクラスの関数内で起こっている)で使用できるオブジェクトAの20の異なるベクトルを初期化することを達成したいと思います。 オブジェクトのベクトルのベクトルAでは、このような操作(オブジェクトAの20種類のベクトルを他のクラスの本体関数内で初期化し、それらをグローバルに使用する方法)を正しく行う方法を知りたいと思います。 私の質問は紛らわしいものではなかったので、ここで助けてもらえますか?

+0

[OK]を、それは私もthougtだが、私はどのように正しく操作を行うことができますか? – user3111197

+1

なぜあなたは 'ベクトル> vec_o​​f_class(20、ベクトル(10));'? – DimChtz

答えて

4

ベクトルを含む標準コンテナを動的に割り当てる場合は、絶対にしないでください。したがって、std::vector<> = new <>は常に間違っています。

ベクターを初期化するには、さまざまな手法を使用できます。私はここのように、初期化子リストは特に便利見つける:

std::vector<int> vec{10, 20, 30, 40, 50}; 
+0

ベクトルではありません vec = {10,20,30,40,50}; ? –

+0

@OmidCompSCIどちらも有効です – DimChtz

+0

@OmidCompSCI Google _uniform initialisation_です。 –

0

だから、私は簡単だ

(サイズ10それぞれの発言)20倍のオブジェクトのベクトルを作成したいと言います。用途:

std::vector<std::vector<A>> my_data{20, std::vector<A>{10}}; 

グローバルスコープである必要があります(ある意味でこれは、クラスの内部で行われていることを、私は、オブジェクトのこれらのベクターは、クラスの外に渡されたいです)。

私はここで何を達成したいのか明確なイメージはありません。

クラス内で何かが行われた場合は、staticメンバ関数または正規メンバ関数で行うことができます。 staticメンバー関数を使用する必要があるようですが、わかりません。

あなたはstaticメンバ関数を使用している場合は、私がお勧めします:

std::vector<std::vector<A>> const& TheClass::get_my_data() 
{ 
    static std::vector<std::vector<A>> my_data{20, std::vector<A>{10}}; 
    static bool inited = false; 
    if (!inited) 
    { 
     // Set the values of the elements in my_data 
     // ... 

     inited = true; 
    } 
    return my_data; 
} 

あなたは、通常のメンバ関数を使用している場合は、私はコンストラクタでmy_dataを投入し、関数からの復帰示唆しています。

// Need to make my_data a member variable 
TheClass::TheClass() : my_data{20, std::vector<A>{10}} 
{ 
    // Set the values of the elements in my_data 
    // ... 
} 

std::vector<std::vector<A>> const& TheClass::get_my_data() const 
{ 
    return my_data; 
} 
関連する問題