从零开始学C++之标准库类型(三):map 类简介和例程
2013-07-11 20:02
495 查看
一、标准库的map类型
使用map得包含map类所在的头文件
#include <map>
定义一个map对象: map<string, int> mapTest;
//用string作为索引,存储int对象
例程1:map 插入数据
C++ Code
如上所述,key重复,则被修改成最后一次插入的值,如果使用的是multimap 则会保留,这一点的区别与 multiset 和 set 一致。
例程2:map 查找与修改
C++ Code
例程3:map 删除数据
C++ Code
例程4:使用map 计算每个单词出现的次数
C++ Code
参考:
C++ primer 第四版
Effective C++ 3rd
C++编程规范
使用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; } |
如上所述,key重复,则被修改成最后一次插入的值,如果使用的是multimap 则会保留,这一点的区别与 multiset 和 set 一致。
例程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++编程规范
相关文章推荐
- 从零开始学C++之标准库类型(三):map 类简介和例程
- 从零开始学C++之标准库类型(三):map 类简介和例程
- 从零开始学C++之标准库类型(二):vector 类简介和例程
- 从零开始学C++之标准库类型(二):vector 类简介和例程
- 从零开始学C++之标准库类型(一):string 类简介和例程
- 从零开始学C++之标准库类型(一):string 类简介和例程
- 从零开始学C++之标准库类型(二):vector 类简介和例程
- 从零开始学C++之标准库类型(一):string 类简介和例程
- C++map类型 之 简介
- C++ Primer学习笔记7 标准库类型(标准库vector类型、迭代器简介)
- 标准C++的4个类型转换符使用场景
- C++学习之map类型
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- 从零开始学C++之从C到C++(二):引用、数组引用与指针引用、内联函数inline、四种类型转换运算符
- C++语法基础--标准库类型--vector
- <转>标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- 标准C++的类型转换:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)