一、标准库的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 << "\t" << it->second << endl;
    }
    return 0;
}

参考:

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

map 类简介和例程的更多相关文章

  1. vector 类简介和例程

    一.标准库的vector类型 vector是同一种类型的对象的集合 vector的数据结构很像数组,能非常高效和方便地访问单个元素 vector是一个类模板(class template) vecto ...

  2. string 类简介和例程

    一.标准库string类型 string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作 ,在VC中直接F1查看 template < class C ...

  3. ArcGIS API for JavaScript 入门教程[5] 再讲数据——Map类之底图与高程

    [回顾]前4篇交代了JsAPI的背景.资源如何获取,简介了数据与视图分离的概念与实现,剖析了页面的大骨架. 这篇开始,讲Map类. 转载注明出处,博客园/CSDN/B站/知乎:秋意正寒 目录:http ...

  4. Java Map 集合类简介

      作者:Jack Shirazi 了解最常用的集合类型之一 Map 的基础知识以及如何针对您应用程序特有的数据优化 Map. 本文相关下载: · Jack 的 HashMap 测试 · Oracle ...

  5. JAVA Map集合类简介

    了解最常用的集合类型之一 Map 的基础知识以及如何针对您应用程序特有的数据优化 Map. 本文相关下载: · Jack 的 HashMap 测试· Oracle JDeveloper 10g jav ...

  6. ImageView类简介

    4.8  图片控件 本节将要介绍的是图片控件ImageView,首先对ImageView类进行简单介绍,然后通过一个案例来说明ImageView的用法. 4.8.1  ImageView类简介 Ima ...

  7. 探究Java中Map类

    Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.       Map的接口       Map---实现Map       Map.Entry--Map的内部 ...

  8. Spring Security——核心类简介——获得登录用户的相关信息

    核心类简介 目录 1.1     Authentication 1.2     SecurityContextHolder 1.3     AuthenticationManager和Authenti ...

  9. 关于 Go 中 Map 类型和 Slice 类型的传递

    关于 Go 中 Map 类型和 Slice 类型的传递 Map 类型 先看例子 m1: func main() { m := make(map[int]int) mdMap(m) fmt.Printl ...

随机推荐

  1. HDU 4699 Editor (2013多校10,1004题)

    Editor Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  2. MB506/MB510 ULTRA HIGH FREQUENCY PRESCALER

    MB506 ULTRA HIGH FREQUENCY PRESCALER The Fujitsu MB506 is a high frequency, up to 2.4GHz, prescaler ...

  3. [转]如何在Windows Server 2012中安装.Net Framework 3.5?

    http://www.cnblogs.com/westsource/archive/2012/12/26/2834876.html If you have Windows Server 2012 is ...

  4. linux命令显示文件内容行号|linux将内容以行号显示出来

            查看文件内容:cat /etc/shadow里面所有内容         cat命令是全部输出          cat /etc/shadow -n 输出内容及行号,空行业输出了   ...

  5. APP H5页面显示优化

    在开发移动端APP页面时,对各操作系统各种型号的手机进行适配是必须的.然鹅,上周在开发完一个落地页后,被测试给打了回来,其中列出了一个在我看来很小的问题:单击进入页面的时候,页面还没加载完的时候字体显 ...

  6. JMeter技巧集锦

    收藏些介绍JMeter使用知识的文章 1.JMeter技巧集锦 http://www.javaworld.com/javaworld/jw-07-2005/jw-0711-jmeter.html (网 ...

  7. UIButton 设置圆角 边框颜色 点击回调方法

    UIButton *signBtn = [UIButton buttonWithType:UIButtonTypeCustom]; signBtn.frame = CGRectMake(, , , ) ...

  8. combogrid 摘要

    可装载组合框 - ComboBox 继承自$.fn.combo.defaults,通过$.fn.combobox.defaults覆盖默认值 combobox显示的是一个可以编辑的文本框和一个下拉列表 ...

  9. 为Hadoop创建JAR包文件Creating a JAR for Hadoop

    We've seen the internals of MapReduce in the last post. Now we can make a little change to the WordC ...

  10. JAVA泛型通配符T,E,K,V区别,T以及Class<T>,Class<?>的区别以及接口里default方法

    使用大写字母A,B,C,D......X,Y,Z定义的,就都是泛型,把T换成A也一样,这里T只是名字上的意义而已 ? 表示不确定的java类型 T (type) 表示具体的一个java类型 K V ( ...