C ++: добавление POD в следующее место в std :: vector & lt; char & gt;

Давайте возьмем неподписанный int в качестве примера. Итак, я хочу добавить неподписанный int к std::vector<char> так что следующие четыре байта вектора будут заполнены четырьмя байтами uint.

Теперь я хотел бы сделать это, используя ответ Sharptooth Вот но у меня есть два вопроса:

  1. Как я могу использовать этот метод, чтобы вставить стартовую Uint в первом свободном месте вектора — где end итератор указывает на.
  2. Интересно, если end итератор увеличивается при копировании в вектор с помощью memcpy которая не является векторной функцией.

Если ответ 2 отрицательный, какой метод вы бы порекомендовали как лучший способ выполнить эту задачу. Другие ответы в упомянутой ссылке относятся к добавлению в начало вектора.

Вопрос касается и других POD.

2

Решение

Корректировка ответа вы связали:

myVector.insert(myVector.end(), begin_binary(num), end_binary(num));

Где функции начала и конца просто приводят значение, которое вы хотите вставить. Делая это таким образом, вы увеличиваете размер вектора (и его емкость, если необходимо).

2

Другие решения

1,2

std::copy(begin_binary(num), end_binary(num), std::back_inserter(my_vector));

STL автоматически управляет размером вектора при вставке новых элементов.

2

По вопросам рекламы [email protected]