template <class... Args>
iterator emplace_hint(const_iterator hint, Args&&... args);
概要
要素が配置されるべき場所を示唆するパラメータ hint
を使って、コンテナに新しい要素を挿入する。要素は直接構築される(コピーもムーブもされない)。要素のコンストラクタはこの関数に渡された引数と同じ引数で呼ばれる。
パラメータ
hint
: 新しい要素をどこへ挿入するかを示唆するために使われるイテレータargs...
: 要素のコンストラクタへ転送される引数パック
戻り値
挿入された要素を指すイテレータを返す。
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::multiset<s> c;
c.insert(s(10));
c.insert(s(10));
c.insert(s(30));
c.emplace_hint(c.find(s(30)), 10);
std::cout << c.size() << std::endl;
}
出力
4
バージョン
言語
- C++11
関連項目
名前 | 説明 | 対応バージョン |
---|---|---|
emplace |
要素を直接構築する | C++11 |
insert |
要素を挿入する |