std::inplace_vector<T,N>::assign
From cppreference.com
< cpp | container | inplace vector
| constexpr void assign( size_type count, const T& value ); |
(1) | (C++26以降) |
| template< class InputIt > constexpr void assign( InputIt first, InputIt last ); |
(2) | (C++26以降) |
| constexpr void assign( std::initializer_list<T> ilist ); |
(3) | (C++26以降) |
コンテナの内容を置き換えます。
1) contents を count 個の value で置き換えます。
2) contents を、範囲
[first, last) の要素のコピーで置き換えます。 いずれかの引数が *this のイテレータである場合、動作は未定義です。このオーバーロードは、
InputIt が LegacyInputIterator を満たす場合にのみ、オーバーロード解決に参加します。3) contents を ilist の要素で置き換えます。
| このセクションは未完成です |
目次 |
[編集] パラメータ
| count | - | コンテナの新しいサイズ |
| value | - | コンテナの要素を初期化するための値 |
| first, last | - | コピーする要素のソース 範囲 を定義するイテレータペア |
| ilist | - | std::initializer_list から値をコピーします |
[編集] 計算量
1) count に対して線形。
2) first と last の距離に対して線形。
3) ilist.size() に対して線形。
例外
1-3) 挿入された要素の初期化によってスローされた例外。
[編集] 例
以下のコードは、std::inplace_vector<char, 5> に複数の文字を追加するために `assign` を使用しています。
このコードを実行
#include <inplace_vector> #include <iterator> #include <new> #include <print> int main() { std::inplace_vector<char, 5> chars; chars.assign(4, 'a'); // overload (1) std::println("{}", chars); const char extra[3]{'a', 'b', 'c'}; chars.assign(std::cbegin(extra), std::cend(extra)); // overload (2) std::println("{}", chars); chars.assign({'C', '+', '+', '2', '6'}); // overload (3) std::println("{}", chars); try { chars.assign(8, 'x'); // throws: count > chars.capacity() } catch(const std::bad_alloc&) { std::println("std::bad_alloc #1"); } try { const char bad[8]{'?'}; // ranges::distance(bad) > chars.capacity() chars.assign(std::cbegin(bad), std::cend(bad)); // throws } catch(const std::bad_alloc&) { std::println("std::bad_alloc #2"); } try { const auto l = {'1', '2', '3', '4', '5', '6'}; chars.assign(l); // throws: l.size() > chars.capacity() } catch(const std::bad_alloc&) { std::println("std::bad_alloc #3"); } }
出力
['a', 'a', 'a', 'a'] ['a', 'b', 'c'] ['C', '+', '+', '2', '6'] std::bad_alloc #1 std::bad_alloc #2 std::bad_alloc #3
[編集] 関連項目
| コンテナに値の範囲を代入する (公開メンバ関数) | |
| コンテナに値を代入する (公開メンバ関数) |