Если у вас есть что-то вроде
struct cScene {...};
struct cChapter {
std::vector<cScene> scenelist;
}
, тогда никакие указатели не задействуются вообще, и записи, помещенные в scenelist, будут скопированы, каждый элемент в scenelist будет уничтожен, когда cChapter установлен.
Если бы у вас было
struct cChapter {
std::vector<cScene*> scenelist;
}
и б
cScene * newscene = new cScene;
newchapter.scenelist.push_back(newscene);
затем копируется указатель , так что теперь у вас есть два отдельных указателя на одну и ту же ячейку памяти со всеми необходимыми средствами управления временем жизни. Если элементы cScene велики, и вы не хотите копировать издержки std :: vector, взгляните на интеллектуальные указатели boost