std::list<T,Allocator>:: resize
From cppreference.net
|
void
resize
(
size_type count
)
;
|
(1) | (constexpr since C++26) |
|
void
resize
(
size_type count,
const
value_type
&
value
)
;
|
(2) | (constexpr since C++26) |
コンテナを count 個の要素を含むようにサイズ変更します:
- count が現在のサイズと等しい場合、何も行いません。
- 現在のサイズが count より大きい場合、コンテナは最初の count 要素に縮小されます。
- 現在のサイズが count より小さい場合、以下の処理が行われます:
2)
追加の
value
のコピーが追加されます。
目次 |
パラメータ
| count | - | コンテナの新しいサイズ | ||
| value | - | 新しい要素を初期化する値 | ||
| 型要件 | ||||
-
|
||||
計算量
現在のサイズと count の差に対して線形。
注記
オーバーロード
(
1
)
における値初期化が望ましくない場合、例えば要素が非クラス型でありゼロ初期化が不要な場合、
カスタム
Allocator::construct
を提供することで回避できます。
例
このコードを実行
#include <list> #include <iostream> void print(auto rem, const std::list<int>& c) { for (std::cout << rem; const int el : c) std::cout << el << ' '; std::cout << '\n'; } int main() { std::list<int> c = {1, 2, 3}; print("The list holds: ", c); c.resize(5); print("After resize up to 5: ", c); c.resize(2); print("After resize down to 2: ", c); c.resize(6, 4); print("After resize up to 6 (initializer = 4): ", c); }
出力:
The list holds: 1 2 3 After resize up to 5: 1 2 3 0 0 After resize down to 2: 1 2 After resize up to 6 (initializer = 4): 1 2 4 4 4 4
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用バージョン | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 132 | C++98 | 削除範囲の決定にランダムアクセス反復子が使用されていた | 双方向反復子を使用 |
| LWG 679 | C++98 |
resize()
が
value
を値渡ししていた
|
const参照渡しを使用 |
| LWG 1420 | C++98 | resize ( size ( ) ) の動作が規定されていなかった | 規定済み |
関連項目
|
要素の最大可能数を返す
(public member function) |
|
|
要素数を返す
(public member function) |
|
|
コンテナが空かどうかをチェックする
(public member function) |