std::forward_list<T,Allocator>::assign
From cppreference.com
< cpp | container | forward list
| void assign( size_type count, const T& value ); |
(1) | (C++11以降) |
| template< class InputIt > void assign( InputIt first, InputIt last ); |
(2) | (C++11以降) |
| void assign( std::initializer_list<T> ilist ); |
(3) | (C++11以降) |
コンテナの内容を置き換えます。
1) contents を count 個の value で置き換えます。
2) contents を、範囲
[first, last) の要素のコピーで置き換えます。 引数のいずれかが *this の要素へのイテレータである場合、動作は未定義です。
|
このオーバーロードは、 |
(C++11まで) |
|
このオーバーロードは、 |
(C++11以降) |
3) contents を ilist の要素で置き換えます。
コンテナの要素へのすべてのイテレータ、ポインタ、および参照は無効になります。
目次 |
[編集] パラメータ
| count | - | コンテナの新しいサイズ |
| value | - | コンテナの要素を初期化するための値 |
| first, last | - | コピーする要素のソース 範囲 を定義するイテレータペア |
| ilist | - | std::initializer_list から値をコピーします |
[編集] 計算量
1) count に対して線形。
2) first と last の距離に対して線形。
3) ilist.size() に対して線形。
[編集] 例
以下のコードは、std::forward_list<char> にいくつかの文字を追加するために assign を使用しています。
このコードを実行
#include <forward_list> #include <iostream> #include <string> int main() { std::forward_list<char> characters; auto print_forward_list = [&]() { for (char c : characters) std::cout << c << ' '; std::cout << '\n'; }; characters.assign(5, 'a'); print_forward_list(); const std::string extra(6, 'b'); characters.assign(extra.begin(), extra.end()); print_forward_list(); characters.assign({'C', '+', '+', '1', '1'}); print_forward_list(); }
出力
a a a a a b b b b b b C + + 1 1
欠陥レポート
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2209 | C++11 | 置き換え操作は、次のように実装することが要求されていました。 既存のすべての要素を削除し、その後、指定された要素を挿入します。 |
冗長な要件が 要件 |
[編集] 関連項目
| (C++23) |
コンテナに値の範囲を代入する (公開メンバ関数) |
| コンテナに値を代入する (公開メンバ関数) |