C++中STL中map的使用方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26822029/article/details/79376826

    在编程的过程中常常会需要存储一组数据(比如json中的键值一一对应的数据集),如果要使用原生的方法,可以定义一个结构体或者类然后添加相应的方法来实现。但在C++的Standard Template Libray中定义了Map这样一种数据结构,可以方便我们使用。

    下面对STL中的map类进行介绍。

    Map是STL中一对一的关联容器,其中第一个称为键,Map中的键是独一无二的(类似于数据库中的主键),第二个称为Map的值。Map内部自建一颗红黑树(一种非严格意义上的红黑树),这棵树内部具有自动排序的功能,因此在Map内部的数据都是有序的

使用时需要引入头文件:#include <map>
构造1: map<string, string> map_name;
构造2:map<string, string> map_name = {{"abc","aaa"},{"bcd","bbb"}};
插入方法1:如果插入的键值已经存在,默认为更新修改对应的值。 map_name["abc"] = "aaaa";
插入方法2:(具体使用方法见文档)
// 插入单个键值对,并返回插入位置和成功标志,插入位置已经存在值时,插入失败
pair<iterator,bool> insert (const value_type& val);
//在指定位置插入,在不同位置插入效率是不一样的,因为涉及到重排
iterator insert (const_iterator position, const value_type& val);
// 插入多个
void insert (InputIterator first, InputIterator last);
//c++11开始支持,使用列表插入多个   
void insert (initializer_list<value_type> il);
取值:map_name["abc"]; 或者 map_name.at("abc");
获得map的大小:int mapSize = map_name.size();
前向迭代方法示例:
#include <map>
#include <string>
#include <iostream>
using namespace std;
void main()
{
    Map<int,string> mapStudent;
    mapStudent[1] = “student_one”;
    mapStudent[1] = “student_two”;
    mapStudent[2] = “student_three”;
    map<int,string>::iterator iter;
    for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
    {
        cout<<iter->first<<" "<<iter->second<<endl;
    }
}
查找:
// 关键字查询,找到则返回指向该关键字的迭代器,否则返回指向end的迭代器
// 根据map的类型,返回的迭代器为 iterator 或者 const_iterator
iterator find (const key_type& k);
const_iterator find (const key_type& k) const;
Map的清空与空判断

清空map中的数据可以用clear()函数,判定map中是否有数据可以用empty()函数,它返回true则说明是空map。


展开阅读全文

没有更多推荐了,返回首页