Как происходит помещение структур в вектор? Допустим я задал некую структуру
struct patch
{
quint32 address;
quint32 size;
unsigned char* _p_patch;
};
потом переменную patch p, могу ли я заполнять эту переменную различными данными и добавлять в вектор, или нужно каждый раз создавать ее через нью?
В std::vector это будет так:
patch p;
p.address = 1;
p.size = 1;
p._p_patch = "ABC";
std::vector<patch> vPatch;
vPatch.push_back(p);
В Qt также.
и не надо ничего выделять через new. Не знаю правда что с patch::_p_patch, если под это поле выделяется память то нужно ее сначала удалить через delete, а потом из вектора.
UPD
В этом случае при добавлении в вектор произошло копирование объекта p. Теперь он лежит в двух местах: в векторе и в переменной p. Можно конечно сделать так чтобы вектор содержал указатель на patch:
patch* p = new patch;
p->address = 1;
p->size = 1;
p->_p_patch = "ABC";
std::vector<patch*> vPatch;
vPatch.push_back(p);
// работаем с вектором
...
//чистим
for(size_t i = 0; i < vPatch.size(); i++)
delete vPatch[i];
В этом случае нужно освобождать память, иначе будет утечка.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей