Если у меня есть контейнер и вызывается clear()
на нем, это просто разрушает все элементы внутри или действительно ли освобождает/выделяет новую память внутри? Это поведение выходит за рамки стандарта С++?
Это сводится к:
unordered_set<int> mySet { 1, 2, 3, 4, 5 };
mySet.reserve(1000);
mySet.clear();
//Is this pointless/redundant
//or should I treat my container like it was just constructed?
mySet.reserve(1000);
Быстрый тест на ideone (http://ideone.com/XQi8IT) показывает, что буфер внутренней памяти сохраняется после вызова для очистки. Итак, по крайней мере, для новых версий g++ на unordered_set
это так. Мой вопрос касается 1) того, что стандарт говорит, если что-либо и 2) является ли это поведение согласованным во всех контейнерах.