Помещение структур в QVector

256
05 мая 2018, 16:32

Как происходит помещение структур в вектор? Допустим я задал некую структуру

struct patch
{
    quint32 address;
    quint32 size;
    unsigned char* _p_patch;
};

потом переменную patch p, могу ли я заполнять эту переменную различными данными и добавлять в вектор, или нужно каждый раз создавать ее через нью?

Answer 1

В 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];

В этом случае нужно освобождать память, иначе будет утечка.

READ ALSO
React удалить элемент li из списка ul

React удалить элемент li из списка ul

У меня есть компонент для реакта, который описывает элемент <li> спискаЛогика работы компонента такая: он рендерит текст и <span> с крестиком...

242
Обмен данными между iframe js через postMessage + SAME ORIGIN POLICY

Обмен данными между iframe js через postMessage + SAME ORIGIN POLICY

Как с помощю postMessage считать информацию с одного айфрейма(iframe) и записать в другой? Это был скороченый вариант вопросаПомогите дураку вопрос...

240
JS и TypeError: Cannot read property &#39;indexOf&#39; of undefined

JS и TypeError: Cannot read property 'indexOf' of undefined

Использую шаблонизатор loDash в своей работеПри подгрузке файла ajax, содержимое подгружается и код отрабатывается,но консоль выдает ошибку

227