2012-02-01 4 views
4

Я работаю над программой на C++, и мне нужно инициализировать вектор указателей. Я знаю, как инициализировать вектор, но если кто-то может показать мне, как его инициализировать как вектор, наполненный указателями, это было бы здорово!Как инициализировать вектор указателей

+0

Указатели _to what_? –

+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

Boo для исключения небезопасность! :-) –

+0

'emplace_back' не покупает вам ничего с такими скалярными типами, как указатели. – fredoverflow

Смежные вопросы