「std::vector::shrink to fit」の版間の差分
提供: C++入門
(ページの作成:「std::vector::shrink_to_fit とは、C++11で導入されたstd::vectorのメンバ関数で、コンテナのサイズまで領域を切り詰める機能...」) |
(相違点なし)
|
2013年12月28日 (土) 18:29時点における版
std::vector::shrink_to_fit とは、C++11で導入されたstd::vectorのメンバ関数で、コンテナのサイズまで領域を切り詰める機能を提供します。
読み方
- std::vector::shrink_to_fit
- えすてぃーでぃー べくたー しゅりんく とぅー ふぃっと
目次
概要
std::vector::eraseやstd::vector::clearを呼び出しても、メモリ領域がコンテナのサイズまで解放されないため、vectorのメモリを解放したい場合には、shrink_to_fit()を呼び出す必要があります。
プロトタイプ
void shrink_to_fit();
vector_clear1.cpp の例
ソースコード vector_clear1.cpp
std::vector::clearの例です。
#include <iostream> #include <vector> using namespace std; int main(int argc, char const* argv[]) { vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); cout << "size=" << v.size() << " capacity=" << v.capacity() << endl; v.clear (); cout << "size=" << v.size() << " capacity=" << v.capacity() << endl; v.shrink_to_fit(); cout << "size=" << v.size() << " capacity=" << v.capacity() << endl; return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 vector_clear1.cpp -o vector_clear1
実行例
% ./vector_clear1 size=3 capacity=4 size=0 capacity=4 size=0 capacity=0
vector_erase1.cpp の例
ソースコード vector_erase1.cpp
std::vector::eraseの例です。
#include <iostream> #include <vector> using namespace std; int main(int argc, char const* argv[]) { vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); cout << "size=" << v.size() << " capacity=" << v.capacity() << endl; v.erase (v.begin() ); cout << "size=" << v.size() << " capacity=" << v.capacity() << endl; v.shrink_to_fit(); cout << "size=" << v.size() << " capacity=" << v.capacity() << endl; return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 vector_erase1.cpp -o vector_erase1
実行例
% ./vector_erase1 size=3 capacity=4 size=2 capacity=4 size=2 capacity=2