Возьмем в качестве примера беззнаковое целое число. Итак, я хочу добавить целое число без знака к std::vector<char>
, чтобы следующие четыре байта вектора были заполнены четырьмя байтами uint.
Теперь я хотел бы сделать это, используя ответ Sharptooth здесь, но у меня есть два вопроса:
- Как я могу использовать этот метод для вставки uint, начиная с первого свободного места вектора, куда указывает итератор
end
. - Интересно, увеличивается ли итератор
end
при копировании в вектор с использованиемmemcpy
, который не является векторной функцией.
Если ответ 2 отрицательный, какой метод вы бы порекомендовали как лучший способ выполнить эту задачу. Другие ответы в упомянутой ссылке относятся к добавлению в начало вектора.
Вопрос относится и к другим POD.
memcpy
, верно. Что ж, в этом случае, я думаю, вам придется использовать функциюresize
вектора, чтобы убедиться, что он достаточно велик, прежде чем применятьmemcpy
. - person jogojapan   schedule 27.05.2013vector<char>
для отправки байтов в виде последовательности по сети, получатель может быть не в состоянии повторно преобразовать их обратно в целые числа (или другие POD). Но если вы не собираетесь отправлять поток байтов на другой компьютер (или, если на то пошло, хранить его на диске и загружать на другую платформу), это не будет проблемой. - person jogojapan   schedule 27.05.2013