在使用vector的過程中,經常會遇到以下場景
vector<int> vec; while (1) { vec.push_back(1); vec.push_back(2); vec.push_back(3); .... // 處理的vec func(vec); // 釋放vec內存 vec.clear(); }
可是使用clear釋放vector內存有是問題的,可參考c++標准:
clear只是將vector的size置零,可是並不保證capacity為零,因此clear並不能釋放vector已經申請的內存。可使用vector<T>().swap(x)完成釋放內存的操作。