名前空間
変種
操作

std::forward_list<T,Allocator>::insert_after

From cppreference.com
 
 
 
 
iterator insert_after( const_iterator pos, const T& value );
(1) (C++11以降)
iterator insert_after( const_iterator pos, T&& value );
(2) (C++11以降)
iterator insert_after( const_iterator pos, size_type count, const T& value );
(3) (C++11以降)
template< class InputIt >
iterator insert_after( const_iterator pos, InputIt first, InputIt last );
(4) (C++11以降)
iterator insert_after( const_iterator pos, std::initializer_list<T> ilist );
(5) (C++11以降)

コンテナ内の指定された位置の後ろに要素を挿入します。

1,2) pos が指す要素の後ろに value を挿入します。
3) pos が指す要素の後ろに、value のコピーを count 個挿入します。
4) pos が指す要素の後ろに、範囲 [firstlast) から要素を挿入します。 firstlast*this のイテレータである場合、動作は未定義です。
5) 初期化リスト ilist から要素を挿入します。

イテレータや参照は無効化されない。

目次

[編集] パラメータ

pos - コンテンツが挿入されるイテレータ
value - 挿入する要素の値
count - 挿入するコピーの数
first, last - 挿入する要素のソース 範囲 を定義するイテレータのペア
ilist - 挿入する値の初期化子リスト
型要件
-
InputItLegacyInputIterator の要件を満たす必要があります。

[編集] 戻り値

1,2) 挿入された要素へのイテレータ。
3) 最後に挿入された要素へのイテレータ。または、count == 0 の場合は pos
4) 最後に挿入された要素へのイテレータ。または、first == last の場合は pos
5) 最後に挿入された要素へのイテレータ。または、ilist が空の場合は pos

[編集] 例外

何らかの理由で例外がスローされた場合、これらの関数は効果がありません(強力な例外安全性保証)。

[編集] 計算量

1,2) 定数時間。
3) count に対して線形。
4) std::distance(first, last) に対して線形。
5) ilist.size() に対して線形。

[編集]

#include <forward_list>
#include <iostream>
#include <string>
#include <vector>
 
void print(const std::forward_list<int>& list)
{
    std::cout << "list: {";
    for (char comma[3] = {'\0', ' ', '\0'}; int i : list)
    {
        std::cout << comma << i;
        comma[0] = ',';
    }
    std::cout << "}\n";
}
 
int main()
{
    std::forward_list<int> ints{1, 2, 3, 4, 5};
    print(ints);
 
    // insert_after (2)
    auto beginIt = ints.begin();
    ints.insert_after(beginIt, -6);
    print(ints);
 
    // insert_after (3)
    auto anotherIt = beginIt;
    ++anotherIt;
    anotherIt = ints.insert_after(anotherIt, 2, -7);
    print(ints);
 
    // insert_after (4)
    const std::vector<int> v = {-8, -9, -10};
    anotherIt = ints.insert_after(anotherIt, v.cbegin(), v.cend());
    print(ints);
 
    // insert_after (5)
    ints.insert_after(anotherIt, {-11, -12, -13, -14});
    print(ints);
}

出力

list: {1, 2, 3, 4, 5}
list: {1, -6, 2, 3, 4, 5}
list: {1, -6, -7, -7, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, -11, -12, -13, -14, 2, 3, 4, 5}

[編集] 関連項目

指定した要素の直後に要素を直接構築する
(public member function) [編集]
先頭に要素を挿入する
(公開メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)