2012-02-01 8 views
4

私はC++プログラムで作業しており、ポインタのベクトルを初期化する必要があります。私はベクトルを初期化する方法を知っていますが、誰かがそれをベクトルで初期化する方法を私に示すことができたら、それは素晴らしいでしょう!ポインタのベクトルを初期化する方法

+0

ポインタwhat_ _to? –

+0

使用中のベクターを確認するには、http://stackoverflow.com/questions/258871/how-to-use-find-algorithm-with-a-vector-of-pointers-to-objects-in-cをご覧ください。 – eppdog

+0

http://stackoverflow.com/questions/817263/is-it-possible-to-create-a-vector-of-pointers – eppdog

答えて

17

ポインタのゼロサイズのベクター:

std::vector<int*> empty; 

NULLポインタのベクトル:

std::vector<int*> nulled(10); 

新しく割り当てられたオブジェクト(実際にかかわらず、初期化せず)へのポインタのベクトル:

std::vector<int*> stuff; 
stuff.reserve(10); 
for(int i = 0; i < 10; ++i) 
    stuff.push_back(new int(i)); 

新しく割り当てられたオブジェクトへのポインタのベクトルを初期化する(C++ 11が必要):

std::vector<int*> widgets{ new int(0), new int(1), new int(17) }; 

は、#3の賢くバージョン:

std::vector<std::unique_ptr<int>> stuff; 
stuff.reserve(10); 
for(int i = 0; i < 10; ++i) 
    stuff.emplace_back(new int(i)); 
+0

ありがとう、これは助けて! –

+0

例外が発生したため安全ではありません! :-) –

+0

'emplace_back'はポインタのようなスカラー型では何も買っていません。 – fredoverflow

関連する問題