名前空間
変種
操作

std::multimap<Key,T,Compare,Allocator>::emplace

提供: cppreference.com
< cpp‎ | container‎ | multimap
 
 
 
 
template<class... Args>
iterator emplace( Args&&... args);
(C++11以上)

指定された args を使用してその場で構築される新しい要素をコンテナに挿入します。

emplace を注意深く使用すれば、不必要なコピーやムーブを避けながら新しい要素を構築することができます。 新しい要素 (すなわち std::pair<const Key, T>) のコンストラクタは、 emplace に与えられたものとまったく同じ引数が std::forward<Args>(args)... によって転送されて、呼ばれます。


どのイテレータも参照も無効化されません。

目次

[編集]引数

args - 要素のコンストラクタに転送される引数

[編集]戻り値

挿入された要素を指すイテレータを返します。

[編集]例外

何らかの操作によって例外が投げられた場合、この関数は何の効果も持ちません。

[編集]計算量

コンテナのサイズの対数。

[編集]

#include <iostream>#include <utility>#include <string>#include <map>   int main(){std::multimap<std::string, std::string> m;   // uses pair's move constructor m.emplace(std::make_pair(std::string("a"), std::string("a")));   // uses pair's converting move constructor m.emplace(std::make_pair("b", "abcd"));   // uses pair's template constructor m.emplace("d", "ddd");   // uses pair's piecewise constructor m.emplace(std::piecewise_construct, std::forward_as_tuple("c"), std::forward_as_tuple(10, 'c'));     for(constauto&p : m){std::cout<< p.first<<" => "<< p.second<<'\n';}}

出力:

a => a b => abcd c => cccccccccc d => ddd

[編集]関連項目

ヒントを使用して要素をその場で構築します
(パブリックメンバ関数)[edit]
要素またはノード(C++17以上)を挿入します
(パブリックメンバ関数)[edit]
close