std::inplace_vector<T,N>::try_append_range
ja.cppreference.net より
template< container-compatible-range<T> R >
constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg );
|
(C++26から) (C++26で削除) |
|
先頭の要素のコピーを rgの前に end()、すべての要素が挿入されるか、内部ストレージが満杯になる(すなわち 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の目的を説明してください。 |
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_inplace_vector |
202603L |
(C++26) | 削除済み try_append_range
|
例
このコードを実行する
#include <cassert>
#include <initializer_list>
#include <inplace_vector>
int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
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);
#endif
}
関連項目
|
末尾に要素の範囲を追加する
(公開メンバ関数) |
|
|
末尾に要素を追加する
(公開メンバ関数) |
|
|
末尾に要素を追加しようと試みる
(公開メンバ関数) |
|
|
無条件に末尾に要素を追加する
(公開メンバ関数) |
|
|
末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
末尾に要素をその場で構築しようと試みる
(公開メンバ関数) |
|
|
無条件に末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
最後の要素を削除する
(公開メンバ関数) |
|
|
引数から推論された型の
std::back_insert_iterator
を作成する
(関数テンプレート) |