您的位置:首页 > 其它

STL之map实现

2015-05-15 18:25 169 查看

STL map

#include<stdio.h>
#include<map>
using namespace std;
/*
C++ Maps是一种关联式容器,包含“关键字/值”对
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
*/
int main()
{
    int n;
    map<int,int>mymap;
    int a[10]={3,1,2,5,3,6,7,9,6,3};
    mymap.clear();//清零
    int ans,t;
        for(int i=0;i<10;i++)
            mymap[a[i]]++;//进入map后自动排序,切每个元素只出现一次
        map<int,int>::iterator it;//迭代器,可以理解为一个指针
        for(it=mymap.begin();it!=mymap.end();it++)
            printf("%d ",*it); //用迭代器指向首元素,it++指向下一个

            printf("\n%d",mymap.count(3));//map中count作为判断是否存在返回值为0或1,对于find函数,暂时不作分析
            printf("\n%d\n",mymap.empty());//空返回1,不空返回0
            mymap.erase(9);//删除某元素
            printf("erase 9:") ;
             for(it=mymap.begin();it!=mymap.end();it++)
            printf("%d ",*it);
            printf("\n%d",mymap.size());//个数
   return 0;
}


映射和多重映射基于某一类型Key的键集的存在,提供对T类型的数据进行快速和高效的检索。对map而言,键只是指存储在容器中的某一成员。Map不支持副本键,multimap支持副本键。Map和multimap对象包涵了键和各个键有关的值,键和值的数据类型是不相同的,这与set不同。set中的key和value是Key类型的,而map中的key和value是一个pair结构中的两个分量。(来自百度文库,反正我是没怎么看懂-
-)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: