v.resize(numOfElements);
v.clear(); //so i wont get numOfElements + len when i push back
Что ж, приведенный выше фрагмент кода фактически выделяет и создает элементы, просто чтобы снова их уничтожить. По сути, это так же, как:
v.reserve(numOfElements);
Просто этот код работает намного быстрее. Таким образом, v.size() == 0
в обоих случаях и v.capacity()
могут совпадать с numOfElements
в обоих случаях (хотя это не гарантируется ). Во втором случае, однако, емкость составляет , по крайней мере, numOfElements , что означает, что внутренний буфер не будет перераспределен до тех пор, пока вы не добавите столько элементов в ваш вектор. Обратите внимание, что в обоих случаях недопустимо , если вы попытаетесь получить доступ к каким-либо элементам - потому что фактически содержится нулевой элемент.
Кроме того, я не нашел проблемы в вашем коде. Это безопасно, и я бы рекомендовал его использовать, так что используйте вместо new
или malloc
из-за дополнительной безопасности, которую он обеспечивает. Я, однако, не уверен, что вы подразумеваете под "дамп v".