###前提・実現したいこと
C++のvectorクラスを用いた、以下の多重配列vecs変数のメモリを解放したい
cpp
1vector<int> vec; 2for (int i = 0; i < 10; ++i) { 3 vec.push_back(i); 4} 5vector<vector<int>> vecs{ vec,vec,vec,vec };
単純なvector変数はswap技法(以下)でメモリ解放ができましたが、
vectorの多重配列のメモリ開放のやり方がわかりません。
良いやり方はありますでしょうか?
cpp
1// vectorクラスvecを宣言 2vector<int> vec{}; 3// swapでvecを解放 4vector<int>().swap(vec);
###該当のソースコード(今の自分の限界)
cpp
1// swap技法でvectorのメモリ開放 2void deleteVector(vector<vector<int>>& vecs) { 3 // vector<int>().swap(vecs)としたら怒られました…… 4 for (auto& vec : vecs) { 5 vector<int>().swap(vec); 6 } 7} 8 9int main() 10{ 11 vector<int> vec; 12 13 for (int i = 0; i < 10; ++i) { 14 vec.push_back(i); 15 } 16 17 vector<vector<int>> vecs{ vec,vec,vec,vec }; 18 19 cout << "Before swap" << endl; 20 cout << "Size: " << vecs.size() << endl; 21 cout << "Capacity: " << vecs.capacity() << endl; 22 23 24 deleteVector(vecs); 25 cout << "After swap:" << endl; 26 cout << "Size: " << vecs.size() << endl; 27 cout << "Capacity: " << vecs.capacity() << endl; 28 29 system("PAUSE"); 30 return 0; 31}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/09 00:29