最終更新日時(UTC):
が更新

履歴 編集

function template
<flat_map>

std::flat_map::emplace_hint(C++23)

template <class... Args>
iterator emplace_hint(const_iterator hint, Args&&... args);

概要

要素が配置されるべき場所を示唆するパラメータ hint を使って、コンテナに新しい要素を挿入する。要素は直接構築される(コピーもムーブもされない)。要素のコンストラクタはこの関数に渡された引数と同じ引数で呼ばれる。

パラメータ

  • hint : 新しい要素をどこへ挿入するかを示唆するために使われるイテレータ
  • args... : 要素のコンストラクタへ転送される引数パック

戻り値

新たな要素が追加された場合、その追加された要素を指すイテレータ。新たな要素が追加されなかった場合、既にあった要素を指すイテレータ。

計算量

一般にコンテナのサイズについて対数時間だが、新しい要素が hint の前に挿入された場合は償却定数時間。

備考

  • try_emplace と異なり、たとえ要素が挿入されなかった場合でも value_type 型のオブジェクトが構築される可能性があり、結果として引数 argsmove の対象となって変更されてしまっている可能性があるため、注意が必要である。

#include <iostream>
#include <flat_map>

int main()
{
  std::flat_map<int, char> fm;

  fm.emplace(1, 'A');

  // キー2の要素が最後尾に追加されることが事前にわかっているので、fm.end()をヒントとして与える
  fm.emplace_hint(fm.end(), 2, 'B');

  for (const auto& [key, value] : fm) {
    std::cout << key << " : " << value << std::endl;
  }
}

出力

1 : A
2 : B

バージョン

言語

  • C++23

処理系

関連項目

名前 説明
flat_map::insert 要素を挿入する
flat_map::insert_range Rangeを挿入する
flat_map::insert_or_assign 要素を挿入、あるいは代入する
flat_map::emplace 要素を直接構築する
flat_map::try_emplace キーが存在しない場合のみ要素を直接構築する