zoukankan      html  css  js  c++  java
  • map 类简介和例程

    一、标准库的map类型

    使用map得包含map类所在的头文件

    template <
       class Key, 
       class Type, 
       class Traits = less<Key>, 
       class Allocator=allocator<pair <const Key, Type> > 
    >
    class map

    #include <map> 

    定义一个map对象: map<string, int> mapTest;

    //用string作为索引,存储int对象


    例程1:map 插入数据

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <map>
    #include <string>
    #include <iostream>

    using namespace std;

    int main(void)
    {
        // 插入到map容器内部的元素默认是按照key从小到大来排序。
        // key类型一定要重载<运算符
        map<string, int> mapTest;

        mapTest["aaa"] = 100;   // int& operator[](const string& index);
        mapTest["eee"] = 500;
        mapTest["eee"] = 300; //[]方式,key重复,则被修改成最后一次插入的值。
        mapTest.insert(map<string, int>::value_type("bbb", 200));
        mapTest.insert(map<string, int>::value_type("bbb", 2000)); //不允许key值重复插入,无效
        mapTest.insert(pair<string, int>("ccc", 300));
        mapTest.insert(pair<string, int>("ccc", 3000));
        mapTest.insert(make_pair("ddd", 400));
        mapTest.insert(make_pair("ddd", 4000));


        map<string, int>::const_iterator it;
        for (it = mapTest.begin(); it != mapTest.end(); ++it)
        {
            cout << it->first << " " << it->second << endl;
        }

        return 0;

    }


    如上所述,

    例程2:map 查找与修改

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    #include <map>
    #include <string>
    #include <iostream>

    using namespace std;

    int main(void)
    {
        // 插入到map容器内部的无素默认是按照key从小到大来排序。
        // key类型一定要重载<运算符
        map<string, int> mapTest;

        mapTest["aaa"] = 100;   // int& operator[](const string& index);
        mapTest.insert(map<string, int>::value_type("bbb", 200));
        mapTest.insert(pair<string, int>("ccc", 300));
        mapTest.insert(make_pair("ddd", 400));

        int n = mapTest["bbb"];
        cout << n << endl;
        mapTest["bbb"] = 2000;

        map<string, int>::iterator it;
        it = mapTest.find("ccc");
        if (it != mapTest.end())
        {
            it->second = 3000;
        }
        else
        {
            cout << "not found" << endl;
        }


        //map<string,int>::const_iterator it;
        for (it = mapTest.begin(); it != mapTest.end(); ++it)
        {
            cout << it->first << " " << it->second << endl;
        }

        return 0;

    }



    例程3:map 删除数据

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <map>
    #include <string>
    #include <iostream>

    using namespace std;

    int main(void)
    {
        // 插入到map容器内部的无素默认是按照key从小到大来排序。
        // key类型一定要重载<运算符
        map<string, int> mapTest;

        mapTest["aaa"] = 100;   // int& operator[](const string& index);
        mapTest.insert(map<string, int>::value_type("bbb", 200));
        mapTest.insert(pair<string, int>("ccc", 300));
        mapTest.insert(make_pair("ddd", 400));


        mapTest.erase("bbb");
        map<string, int>::const_iterator it;
        it = mapTest.find("ccc");
        if (it != mapTest.end())
        {
            mapTest.erase(it);
        }

        for (it = mapTest.begin(); it != mapTest.end(); ++it)
        {
            cout << it->first << " " << it->second << endl;
        }

        return 0;

    }



    例程4:使用map 计算每个单词出现的次数

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    /*************************************************************************
    > File Name: count_words.cpp
    > Author: Simba
    > Mail: dameng34@163.com
    > Created Time: Sat 10 Nov 2012 10:20:14 AM CST
    ************************************************************************/

    #include<iostream>
    #include<map>
    #include<string>
    #include<iterator>

    using namespace std;

    int main(void)
    {
        string s;
        map<string, int> counters;
        // read the input
        while (cin >> s)
            ++counters[s];
        cout << endl;
        for (map<string, int> :: const_iterator it = counters.begin();
                it != counters.end(); ++it)
        {

            cout << it ->first << " " << it->second << endl;
        }
        return 0;
    }



    参考:

    C++ primer 第四版
    Effective C++ 3rd
    C++编程规范

  • 相关阅读:
    windows服务器下安装APC
    (经验)在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序
    网站访问计数器
    网站计数器代码(jsp版本)
    .NET2.0隐形的翅膀,正则表达式搜魂者
    PHP中array数组教程
    [Python] py2exe先知其然
    [Python] Ubuntu12.04LTS
    [Python] 中文
    [linux] is not in the sudoers file
  • 原文地址:https://www.cnblogs.com/alantu2018/p/8471080.html
Copyright © 2011-2022 走看看