「std::vector::clear」の版間の差分
提供: C++入門
(ページの作成:「std::vector::clear とは、std::vectorのコンテナの内容をクリアするメンバ関数です。ただし、メモリサイズが解放されるわけ...」) |
|||
行1: | 行1: | ||
− | [[std::vector::clear]] とは、[[std::vector]] | + | [[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