Давайте возьмем беззнаковый int в качестве примера. Итак, я хочу добавить unsigned int в std::vector<char>
, так что следующие четыре байта вектора будут заполнены четырьмя байтами uint.C++: добавление POD в следующее место в std :: vector <char>
Теперь я хотел бы сделать это с помощью ответа Sharptooth в here, но у меня есть два вопроса:
- Как я могу использовать этот метод, чтобы вставить UINT начиная на первое свободное место вектора - где указывает итератор
end
. - Интересно, увеличивается ли итератор
end
при копировании в вектор с использованиемmemcpy
, который не является функцией вектора.
Если ответ 2 отрицательный, какой метод вы бы рекомендовали как лучший способ выполнить эту задачу. Другие ответы в упомянутой ссылке относятся к добавлению к началу вектора.
Вопрос относится также к другим POD.
memcpy может использоваться для любого целевого индекса .. но убедитесь, что вы выделили место сначала .. –
memcpy будет ** не ** увеличивать итератор конца. Это просто бульдозы над местом памяти, которое вы ему даете, независимо от того, принадлежит оно вам или нет. memcpy полностью не знает о каких-либо контейнерах. –
Вы хотите использовать ответ Sharptooth конкретно, а не, например, ответ sbi в вопросе, который вы связали? Ответ sbi, кажется, решает как 1), так и 2). – jogojapan