упоминание:
vector<ElementData> Elements
// fill the vector up
vector<ElementData>().swap(Elements);
Корректно ли оно?
shrink_to_fit
Так тут удалить надо
.clear()/.shrink_to_fit() но можно и свапом. но это менее очевидный код
Elements = std::vector<ElementData>;
.clear()
Он память не освобождает
+ shrink_to_fit
Который может ничего не делать. Надо как настоящий с++ погромист делать vector.swap(std::vector<Element>{}); А кек у автора вопроса так и есть
cout << hash_table.size() << "\n"; // vector<vector<pair<string, string>>>().swap(hash_table); hash_table.clear(); hash_table.shrink_to_fit(); cout << hash_table.size() << "\n"; проверил оба метода: везде выводиться размер 0 после очистки. получаеться оба работаеют?
После clear сайз всегда будет 0, но никто не обещает что shrink_to_fit или clear очистят память которую они держат
Ну, если написать swap(vector, std::vector<Element>{}), то это даже менее неочевидно. Но, конечно, я против такого подхода
#define CLEAR(x) do { using std::swap; \ swap(x, decltype(x)()); } while (false); Пожалуйста!
А шаблоном нельзя?
сделать нормально можно в любое время, но зачем
Обсуждают сегодня