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
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
| 名前 | 説明 |
|---|---|
emplace_hint |
ヒント付きで要素を直接構築で挿入する |
insert |
要素を挿入する |
insert_range |
Rangeの要素を挿入する |
参照
- P0447R28 Introduction of
std::hiveto the standard library- C++26で
hiveが追加された
- C++26で