std::inplace_vector<T,N>:: try_append_range
|
template
<
container-compatible-range
<
T
>
R
>
constexpr std :: ranges:: borrowed_iterator_t < R > try_append_range ( R && rg ) ; |
(C++26以降) | |
end()
の前に
rg
の初期要素のコピーを追加し、すべての要素が挿入されるか内部ストレージが枯渇する(つまり
size
(
)
==
capacity
(
)
が
true
になる)まで続けます。
すべてのイテレータと参照は有効なままです。
end()
イテレータは無効化されます。
rg 内の各イテレータは最大1回逆参照されます。
目次 |
パラメータ
| rg | - |
a
container compatible range
, that is, an
input_range
whose elements are convertible to
T
|
| Type requirements | ||
-
T
must be
EmplaceConstructible
into
inplace_vector
from
*
ranges::
begin
(
rg
)
. Otherwise, the behavior is undefined.
|
||
戻り値
rg の最初の要素で * this に挿入されなかった要素を指すイテレータ、またはそのような要素が存在しない場合は ranges:: end ( rg ) を返します。
計算量
挿入される要素の数に対して線形です。
例外
挿入された要素の初期化によってスローされるあらゆる例外。
inplace_vector
は
basic exception safety guarantee
を提供します。つまり、呼び出し前のコンテナの全要素が保持され、既に挿入された要素(例外発生前のものがあれば)もすべて保持されます。
注記
|
このセクションは不完全です
理由: このAPIの目的を説明してください。 |
例
#include <cassert> #include <initializer_list> #include <inplace_vector> int main() { using I = std::inplace_vector<int, 8>; auto nums = I{1, 2, 3}; const auto rg = {-1, -2, -3}; auto it = nums.try_append_range(rg); assert(nums.size() == 6); assert((nums == I{1, 2, 3, -1, -2, -3})); assert(it == rg.end()); it = nums.try_append_range(rg); assert(nums.size() == 8); assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2})); assert(it == rg.begin() + 2); }
関連項目
|
末尾に要素の範囲を追加する
(公開メンバ関数) |
|
|
末尾に要素を追加する
(公開メンバ関数) |
|
|
末尾に要素を追加しようと試みる
(公開メンバ関数) |
|
|
無条件に末尾に要素を追加する
(公開メンバ関数) |
|
|
末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
末尾に要素をその場で構築しようと試みる
(公開メンバ関数) |
|
|
無条件に末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
最後の要素を削除する
(公開メンバ関数) |
|
|
引数から推論された型の
std::back_insert_iterator
を作成する
(関数テンプレート) |