C++ STL Map详解与使用示例

需积分: 28 4 下载量 98 浏览量 更新于2024-09-13 收藏 59KB DOC 举报
“C++中的_map_函数文档详细介绍了如何使用STL中的_map_容器,包括其构造函数、数据插入方法,并提供了示例代码。” 在C++标准模板库(STL)中,`map`是一个关联容器,它存储键值对,其中每个键都是唯一的。键可以用来查找与之关联的值,这使得`map`成为处理一对一映射关系的理想选择。`map`的数据结构基于红黑树,这是一种自平衡的二叉查找树,保证了插入、删除和查找操作的时间复杂度为O(log n)。 1. `map`的构造函数 `map`容器可以通过不同类型的键和值进行初始化,如下所示: ```cpp map<int,string> maphai; // int类型键,string类型值 map<char,int> maphai; // char类型键,int类型值 map<string,char> mapstring; // string类型键,char类型值 map<string,int> mapstring; // string类型键,int类型值 map<int,char> mapint; // int类型键,char类型值 map<char,string> mapchar; // char类型键,string类型值 ``` 这些示例展示了不同类型的键值对组合。 2. 数据的插入 在创建`map`容器后,可以使用以下几种方式插入数据: 第一种:使用`insert`函数插入`pair`数据 ```cpp map<int,string> mapStudent; mapStudent.insert(pair<int,string>(1, "student_one")); mapStudent.insert(pair<int,string>(2, "student_two")); mapStudent.insert(pair<int,string>(3, "student_three")); ``` 这里,`pair`对象被创建并插入,键和值分别由括号内的元素提供。 第二种:使用`insert`函数插入`value_type`数据 ```cpp map<int,string>::value_type student1(1, "student_one"); map<int,string>::value_type student2(2, "student_two"); map<int,string>::value_type student3(3, "student_three"); mapStudent.insert(student1); mapStudent.insert(student2); mapStudent.insert(student3); ``` `value_type`是`map`中键值对的类型,可以直接用来创建键值对实例并插入。 此外,还可以使用下标运算符`[]`来插入或访问数据,例如: ```cpp mapStudent[4] = "student_four"; ``` 如果键已经存在,这将更新对应的值;如果键不存在,会创建一个新的键值对。 3. 遍历`map` 遍历`map`通常通过迭代器进行,如下所示: ```cpp for (auto iter = mapStudent.begin(); iter != mapStudent.end(); iter++) { cout << iter->first << " " << iter->second << endl; } ``` 这里的`begin()`和`end()`方法分别返回`map`的首尾迭代器,`iter->first`和`iter->second`分别访问键和值。 `map`的有序性意味着,当你遍历`map`时,数据将按照键的升序排列。这种特性使得`map`在需要有序数据时非常有用,例如在索引、排序或查找操作中。 总结来说,`map`是C++ STL中一个强大的工具,它利用红黑树实现高效的操作,提供了构造、插入和遍历键值对等多种功能,适用于各种数据结构需求。理解并熟练使用`map`能显著提高C++编程的效率和代码质量。