Ответ 1
Обычно всегда предпочитайте использовать std::vector<T>
, так как разрушение будет автоматически после того, как вектор выйдет из области, а выделенная память будет аккуратно размещена в куче, и вся память будет обработана для вас. std::vector<T>
предоставляет вам все, что вы получаете в массиве, и даже гарантию того, что элементы будут смежно сохранены в памяти (кроме std::vector<bool>
).
В случае std::vector<bool>
вы должны быть осторожны, так как такой код сломается:
std::vector<bool> vb;
vb.push_back(true);
vb.push_back(false);
vb.push_back(true);
bool *pB = &vb[0];
if( *(pB+1) )
{
// do something
}
Факт: std::vector<bool>
не сохраняет смежные bool
s. Это исключение в стандарте, который исправлен в С++ 11.