「std::vector::shrink to fit」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「std::vector::shrink_to_fit とは、C++11で導入されたstd::vectorのメンバ関数で、コンテナのサイズまで領域を切り詰める機能...」)
 
 
行7: 行7:
 
== 概要 ==
 
== 概要 ==
 
[[std::vector::erase]]や[[std::vector::clear]]を呼び出しても、メモリ領域がコンテナのサイズまで解放されないため、vectorのメモリを解放したい場合には、shrink_to_fit()を呼び出す必要があります。
 
[[std::vector::erase]]や[[std::vector::clear]]を呼び出しても、メモリ領域がコンテナのサイズまで解放されないため、vectorのメモリを解放したい場合には、shrink_to_fit()を呼び出す必要があります。
 
 
== プロトタイプ ==
 
== プロトタイプ ==
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
 
void shrink_to_fit();
 
void shrink_to_fit();
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
== vector_clear1.cpp の例 ==
 
== vector_clear1.cpp の例 ==
 
=== ソースコード vector_clear1.cpp ===
 
=== ソースコード vector_clear1.cpp ===
行46: 行44:
 
size=0 capacity=0
 
size=0 capacity=0
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
== vector_erase1.cpp の例 ==
 
== vector_erase1.cpp の例 ==
 
=== ソースコード vector_erase1.cpp ===
 
=== ソースコード vector_erase1.cpp ===
行85: 行82:
 
* [[std::vector]]
 
* [[std::vector]]
 
* [[C++11]]
 
* [[C++11]]
<!-- vim: filetype=mediawiki -->
+
<!-- vim: filetype=mediawiki
 +
-->

2016年1月10日 (日) 20:37時点における最新版

std::vector::shrink_to_fit とは、C++11で導入されたstd::vectorのメンバ関数で、コンテナのサイズまで領域を切り詰める機能を提供します。

読み方

std::vector::shrink_to_fit
えすてぃーでぃー べくたー しゅりんく とぅー ふぃっと

概要

std::vector::erasestd::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

関連項目