最終更新日時(UTC):
が更新

履歴 編集

function
<flat_map>

std::flat_multimap::insert_range

template<container-compatible-range<value_type> R>
void insert_range(R&& rg);                        // (1) C++23

概要

Rangeを挿入し、コンテナを拡張する。

これは、挿入された要素の数だけコンテナの size() を増やす。

内部的に flat_multimap コンテナは、コンストラクト時に指定された比較オブジェクトによって要素を下位から上位へとソートして保持する。

効果

  • メンバ変数として保持しているコンテナcに、以下のように挿入する:

    for (const auto& e : rg) {
      c.keys.insert(c.keys.end(), e.first);
      c.values.insert(c.values.end(), e.second);
    }
    

    • 次に、新しく挿入された要素の範囲をvalue_comp()を基準にソートする
    • 次に、ソートされた結果の範囲と、既存の要素のソートされた範囲をひとつのソートされた範囲にマージする

戻り値

なし

計算量

備考

  • この操作はインプレース・マージを行うため、追加のメモリ確保を行う可能性がある

#include <iostream>
#include <flat_map>

int main()
{
  std::flat_multimap<int, char> fm = {
    {3, 'a'}
  };

  std::flat_multimap<int, char> fm2 = {
    {5, 'd'},
    {15, 'e'},
    {3, 'h'}
  };

  fm.insert_range(fm2);

  for (const auto& [key, value] : fm) {
    std::cout << key << " : " << value << std::endl;
  }
}

出力

3 : a
3 : h
5 : d
15 : e

バージョン

処理系

関連項目

名前 説明
flat_multimap::insert 要素を挿入する
flat_multimap::emplace 要素を直接構築する
flat_multimap::emplace_hint ヒントを使って要素を直接構築する