最終更新日時:
が更新

履歴 編集

function
<set>

std::set::emplace_hint(C++11)

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

概要

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

パラメータ

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

戻り値

新しく挿入された要素またはすでに set に格納されていた同じキー値の要素を指すイテレータを返す。 iterator はメンバ型であり、双方向イテレータとして定義される。

計算量

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

#include <iostream>
#include <set>

struct s
{
  s(int a): a_(a) {}
  int a_;
};

bool operator<(const s& lhs, const s& rhs)
{
  return lhs.a_ < rhs.a_;
}

int main()
{
  std::set<s> c;

  c.insert(s(10));
  c.insert(s(20));
  c.insert(s(30));

  c.emplace_hint(c.find(s(20)), 15);
  std::cout << c.size() << std::endl;
}

出力

4

バージョン

言語

  • C++11

関連項目

名前 説明 対応バージョン
emplace 要素を直接構築する C++11
insert 要素を挿入する

参照