最終更新日時:
が更新

履歴 編集

function template
<hive>

std::hive::emplace(C++26)

template <class... Args>
iterator emplace(Args&&... args); // C++26

概要

要素を直接構築で挿入する。

この関数の引数args...は、要素型Tのコンストラクタ引数である。当関数の内部で要素型Tのコンストラクタを呼び出し、追加する要素を構築する。

挿入位置はコンテナが決定するため、挿入する位置を指定することはできない(順序は未規定である)。

適格要件

Tが、args...からhiveコンテナへのEmplaceConstructibleであること。

効果

std::forward<Args>(args)...で構築した型Tのオブジェクトを挿入する。

例外が送出された場合、副作用は生じない。

戻り値

新たに挿入された要素を指すイテレータ。

計算量

定数時間。型Tのオブジェクトがちょうど1個構築される。

備考

この関数呼び出しにより、終端イテレータ(past-the-end iterator)は無効になる。削除されなかった既存要素へのポインタ・参照・イテレータは無効にならない。

引数args...は、直接的または間接的に*thisが保持する値を参照してもよい。

#include <hive>
#include <print>
#include <string>
#include <utility>

int main()
{
  std::hive<std::pair<int, std::string>> h;

  // pairを構築する引数を渡して、直接構築で挿入する
  h.emplace(1, "a");
  h.emplace(2, "b");

  for (const auto& x : h) {
    std::println("{},{}", x.first, x.second);
  }
}

出力例

1,a
2,b

バージョン

言語

  • C++26

処理系

関連項目

名前 説明
emplace_hint ヒント付きで要素を直接構築で挿入する
insert 要素を挿入する
insert_range Rangeの要素を挿入する

参照