最終更新日時:
が更新

履歴 編集

function
<map>

std::map::erase

void erase(iterator position);                             // (1) C++03
iterator erase(const_iterator position);                   // (1) C++11

size_type erase(const key_type& x);                        // (2)

void erase(iterator first, iterator last);                 // (3) C++03
iterator erase(const_iterator first, const_iterator last); // (3) C++11

概要

単一要素または要素範囲([first, last))を map コンテナから削除する。

これは削除された要素の数だけコンテナの size を減らし、それぞれの要素のデストラクタを呼び出す。

パラメータ

  • position : map から削除する単一要素を指すイテレータ。iterator はメンバ型であり、双方向イテレータとして定義される。
  • x : map から削除される値のキー。key_type はメンバ型であり、map コンテナの中で Key の別名として定義される。ここで Key は 1 番目のテンプレートパラメータであり、コンテナに格納される要素のキーの型である。
  • first, last : map コンテナ内の、削除される範囲 [first, last) を指定するイテレータ。ここでいう範囲は firstlast の間の全ての要素を含み、first が指す要素を含むが last が指す要素は含まない。

戻り値

  • (1), (3)
    • C++03 : 戻り値なし
    • C++11 : 削除された要素の次を指すイテレータを返す。そのような要素がない場合、end()を返す(コンテナが空になった場合や、最後尾の要素を削除した場合)。
  • (2) 削除された要素の数を返す。

計算量

  • (1) 定数時間。
  • (2) コンテナの size() について対数時間。
  • (3) コンテナの size() について対数時間、それに加えて firstlast の間の距離に対する線形時間。

#include <iostream>
#include <map>

int main()
{
  std::map<int, char> m;

  m.insert(std::make_pair(1,'A'));
  m.insert(std::make_pair(2,'B'));
  m.insert(std::make_pair(3,'C'));
  std::cout << m.size() << std::endl;

  m.erase(1);
  std::cout << m.size() << std::endl;

  m.erase(5);
  std::cout << m.size() << std::endl;

  m.erase(m.begin(), m.end());
  std::cout << m.size() << std::endl;

  return 0;
}

出力

3
2
2
0

バージョン

言語

  • C++11

処理系

関連項目

名前 説明
map::clear 全ての要素を削除する
map::insert 要素を挿入する
map::find 指定したキーで要素を探す

参照