template <class... Args>
iterator emplace_hint(const_iterator hint, Args&&... args);
概要
要素が配置されるべき場所を示唆するパラメータ hint
を使って、コンテナに新しい要素を挿入する。要素は直接構築される(コピーもムーブもされない)。要素のコンストラクタはこの関数に渡された引数と同じ引数で呼ばれる。
パラメータ
hint
: 新しい要素をどこへ挿入するかを示唆するために使われるイテレータargs...
: 要素のコンストラクタへ転送される引数パック
戻り値
新たな要素が追加された場合、その追加された要素を指すイテレータ。新たな要素が追加されなかった場合、既にあった要素を指すイテレータ。
計算量
一般にコンテナのサイズについて対数時間だが、新しい要素が hint
の前に挿入された場合は償却定数時間。
例
#include <flat_set>
#include <iostream>
int main()
{
std::flat_set<int> fs = {3, 1, 4};
// キー5の要素が最後尾に追加されることが事前にわかっているので、fs.end()をヒントとして与える
fs.emplace_hint(fs.end(), 5);
for (int i : fs) {
std::cout << i << std::endl;
}
}
15
#include <flat_set>
#include <iostream>
int main()
{
std::flat_set<int> fs = {3, 1, 4};
// キー5の要素が最後尾に追加されることが事前にわかっているので、fs.end()をヒントとして与える
fs.emplace_hint(fs.end(), 5);
for (int i : fs) {
std::cout << i << std::endl;
}
}
出力
1
3
4
5
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- Visual C++: ??
関連項目
名前 | 説明 |
---|---|
flat_set::insert |
要素を挿入する |
flat_set::insert_range |
Rangeを挿入する |
flat_set::emplace |
要素を直接構築する |