stl--map-set用法记录

Map和set内部的元素不可以重复,这一点不同于multimap和multiset。

map的节点是一对数据,使用关键字key来标示每一个成员,相当于字典,把一个值映射成另一个值,如果想创建字典的话,map就是一个很好的选择。

set的节点是一个数据。

一、map使用

1、声明

    map<int, string> Solution;                    (默认是less())   升序

    map<int, string, greater(string)> Solution;                  降序,从大到小

2、插入

    第一种:用insert函数插入pair数据        
                map<int, string> mapStudent;
                mapStudent.insert(pair<int, string>(1, "student_one"));
    第二种:用insert函数插入value_type数据
                map<int, string> mapStudent;
                mapStudent.insert(map<int, string>::value_type (1, "student_one"));
    第三种:用数组方式插入数据
                map<int, string> mapStudent;
                mapStudent[1] = "student_one";

                mapStudent[2] = "student_two";

3、删除

    迭代器删除 
            iter = mapStudent.find(1);
            mapStudent.erase(iter);
    用关键字删除
            Int n = mapStudent.erase(1);//如果删除了会返回1,否则返回0
    用迭代器,成片的删除,一下代码把整个map清空
            mapStudent.earse(mapStudent.begin(), mapStudent.end());
            //成片删除要注意的是,也是STL的特性,删除区间是一个前闭后开的集合

4、大小

    Int nSize = mapStudent.size();

5、遍历

    第一种:前向迭代器
                map<int, string>::iterator iter;
                for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
                        cout << iter->first << " " << iter->second;
    第二种:反相迭代器
                map<int, string>::reverse_iterator iter;
                for(iter = mapStudent.rbegin(); iter != mapStudent.rend(); iter++)
                        cout << iter->first << " " << iter->second;
    第三种:用数组方式
                int nSize = mapStudent.size()
                for(int nIndex = 1; nIndex <= nSize; nIndex++) 

                        cout << mapStudent[nIndex];

6、查找

    第一种:用count函数来判定关键字是否出现,但是无法定位数据出现位置

    第二种:用find函数来定位数据出现位置它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没  有要查找的数据,它返回的迭代器等于end函数返回的迭代器。

    第三种:这个方法用来判定数据是否出现
                Lower_bound函数用法,这个函数用来返回要查找关键字的下界(是一个迭代器)
                Upper_bound函数用法,这个函数用来返回要查找关键字的上界(是一个迭代器)
               ( 例如:map中已经插入了1,2,3,4的话,如果lower_bound(2)的话,返回的2,而upper-bound(2)的话,返回的就是3)

            Equal_range函数返回一个pair,pair里面第一个变量是Lower_bound返回的迭代器,pair里面第二个迭代器是Upper_bound返回的迭代器,如果这两个迭代器相等的话,则说明map中不出现这个关键字。


二、set


    类比 map

猜你喜欢

转载自blog.csdn.net/ax_hacker/article/details/80949766
今日推荐