「std::vector::clear」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「std::vector::clear とは、std::vectorのコンテナの内容をクリアするメンバ関数です。ただし、メモリサイズが解放されるわけ...」)
 
 
行1: 行1:
[[std::vector::clear]] とは、[[std::vector]]のコンテナの内容をクリアするメンバ関数です。ただし、メモリサイズが解放されるわけではないため、shrink_to_fit()が必要になります。
+
[[std::vector::clear]] とは、[[std::vector]]のコンテナの内容をクリアするメンバ関数です。ただし、<u>メモリサイズが解放されるわけではないため、shrink_to_fit()が必要になります</u>。
  
 
'''読み方'''
 
'''読み方'''
行10: 行10:
 
下記の例では、clear後のサイズは0ですが、capacityは、clear()前と変化していません。
 
下記の例では、clear後のサイズは0ですが、capacityは、clear()前と変化していません。
 
vectorを適切なメモリサイズまで減らすには、shrink_to_fit()を使用します。このメンバ関数は、新しいバージョンのコンパイラが必要なので、注意が必要です。
 
vectorを適切なメモリサイズまで減らすには、shrink_to_fit()を使用します。このメンバ関数は、新しいバージョンのコンパイラが必要なので、注意が必要です。
 
 
== vector_clear1.cpp の例 ==
 
== vector_clear1.cpp の例 ==
 
=== ソースコード vector_clear1.cpp ===
 
=== ソースコード vector_clear1.cpp ===
行51: 行50:
 
* [[std::vector::shrink_to_fit]] ([[C++11]])
 
* [[std::vector::shrink_to_fit]] ([[C++11]])
 
* [[C++11]]
 
* [[C++11]]
<!-- vim: filetype=mediawiki -->
+
<!-- vim: filetype=mediawiki
 +
-->

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

std::vector::clear とは、std::vectorのコンテナの内容をクリアするメンバ関数です。ただし、メモリサイズが解放されるわけではないため、shrink_to_fit()が必要になります

読み方

std::vector::clear
えすてぃーでぃー べくたー くりあ

概要

std::vectorは、std::vector::clearで確保しているメモリサイズを解放してくれるわけではありません。

下記の例では、clear後のサイズは0ですが、capacityは、clear()前と変化していません。 vectorを適切なメモリサイズまで減らすには、shrink_to_fit()を使用します。このメンバ関数は、新しいバージョンのコンパイラが必要なので、注意が必要です。

vector_clear1.cpp の例

ソースコード vector_clear1.cpp

#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;
	// clear しても capacityは変化しません。
 
        v.shrink_to_fit();	// 新しいコンパイラが必要です。
        cout << "size=" << v.size() << " capacity=" << v.capacity() << endl;
	// ここで、capacityが変化します。
        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

関連項目