「std::map」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「std::map とは、C++のSTLコンテナの1つで、連想配列です。登録した順番と関係のないstd::tr1::unordered_mapもあります。 '''...」)
(相違点なし)

2014年11月24日 (月) 00:44時点における版

std::map とは、C++のSTLコンテナの1つで、連想配列です。登録した順番と関係のないstd::tr1::unordered_mapもあります。

読み方

std::map
えすてぃーでぃー まっぷ

概要

erase
要素を削除します
find
要素を検索します
insert
要素を挿入します
size
要素数を返します
clear
すべての要素を削除します
empty
mapが空なら真を返します

[]演算子

mapは、[]演算子を用いて、添字のようにアクセスできます。存在しないキーにアクセスした場合、自動的に要素が追加されていまいます。

ヘッダファイル

#include <map>

要素の追加

std::mapは、2つの方法で要素を追加できます。

  • []演算子を用いて要素を追加します。
  • insert を用いて要素を追加します。
map<int, int> m1;
m1.insert( map<int, int>::value_type(1, 100);
map<int, int> m1;
m1[1] = 100;

std_map1.cpp の例

ソースコード std_map1.cpp

/*
 * std_map1.cpp
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
#include <iostream>
#include <map>
 
int main(int argc, char const* argv[])
{
        std::map<int,int> m1;
 
        m1[1] = 100;
        m1[2] = 200;
        m1[3] = 300;
 
        for (auto& x:m1) {
                std::cout << x.first << " => " << x.second << std::endl;
        }
 
        return 0;
}

コンパイル

c++ -std=c++11  std_map1.cpp -o std_map1

実行例

% ./std_map1
1 => 100
2 => 200
3 => 300

[]演算子で存在しない要素にアクセスすると自動的に追加される

ソースコード std_map_test1.cpp

/*
 * std_map1.cpp
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
#include <iostream>
#include <map>
using namespace std;
int main(int argc, char const* argv[])
{
        std::map<int,int> m1;
 
        cout << m1.size() << endl;	// 当然 0
        cout << m1[1] << endl;		// 存在していないキーにアクセスする
        cout << m1.size() << endl;	// 上の行のアクセスの結果、1要素追加されている
 
        for (auto& x:m1) {
		// キー1, 値 0 が表示される
                std::cout << x.first << " => " << x.second << std::endl;
        }
        return 0;
}

コンパイル

c++ -std=c++11  std_map_test1.cpp -o std_map_test1

実行例

% ./std_map_test1
0
0
1
1 => 0

関連項目