std::forward_list<T,Allocator>:: insert_range_after
From cppreference.net
<
cpp
|
container
|
forward list
|
template
<
container-compatible-range
<
T
>
R
>
iterator insert_range_after ( const_iterator pos, R && rg ) ; |
(C++23以降)
(constexprはC++26以降) |
|
rg で指定された範囲の要素のコピーを pos の後に挿入します。範囲 rg 内の各イテレータは正確に1回デリファレンスされます。
以下のいずれかの条件が満たされる場合、動作は未定義です:
-
Tは EmplaceConstructible ではなく、forward_listに * ranges:: begin ( rg ) から構築できません。 -
pos
が範囲
[before_begin(),end())内にありません。 - rg と * this が重複しています。
イテレータや参照は無効化されません。
目次 |
パラメータ
| pos | - | コンテンツが挿入される位置を示すイテレータ |
| rg | - |
コンテナ互換範囲(
container compatible range
)。つまり、
input_range
であり、その要素が
T
に変換可能な範囲
|
戻り値
最後に挿入された要素へのイテレータ、または pos が rg が空の場合。
計算量
rg のサイズに対して線形。
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | レンジ対応 構築と挿入 |
例
このコードを実行
#include <algorithm> #include <cassert> #include <forward_list> #include <iterator> #include <vector> int main() { auto container = std::forward_list{1, 2, 3, 4}; auto pos = std::next(container.cbegin()); assert(*pos == 2); const auto rg = std::vector{-1, -2, -3}; #ifdef __cpp_lib_containers_ranges container.insert_range_after(pos, rg); #else container.insert_after(pos, rg.cbegin(), rg.cend()); #endif assert(std::ranges::equal(container, std::vector{1, 2, -1, -2, -3, 3, 4})); }
関連項目
|
(C++23)
|
先頭に要素の範囲を追加する
(public member function) |
|
要素の後に要素を挿入する
(public member function) |
|
|
要素の後に要素をその場で構築する
(public member function) |