• 第十章 关联容器(下)


    1.set类型的关联容器

    set容器跟map容器相类似,只不过set的容器只是单纯的键的集合。set容器不支持下标操作,元素类型不是value_type类型,而是key_type类型。即set容器仅仅只存储键,而没有所关联的值。与map容器一样,存储的键也必须是唯一的,不能修改。

    2.set的容器的定义

    set<T>iset;创建一个空的set的对象iset,元素类型为T。

    set<T>iset(b,e);创建一个set的对象iset,有迭代器b和e指定范围的元素初始化,元素必须是T类型。

    3.set的容器的添加元素

    由于set容器不支持下标操作,所以只有与map容器一样采用insert操作来添加元素。

    set<string>set1("liujiyu"),set2("nihao");

    set1.insert(set2.begin(),set2.end());

    4.set容器读取相应的元素

    set容器和map容器获取元素的时候不同,set的容器采用find和count成员函数来获取元素。

    set<int>iset;

    iset.find(a);查找整数a的值,如果存在,则返回指向a的位置的迭代器。否则返回指向set.end()的迭代器

    iset.count(a);查找整数a出现的次数。在set的容器中,count成员函数返回的只有0或者1

    5.遍历set容器的元素

    这个操作跟map容器一样,通过迭代器来遍历,唯一不同的是set的容器仅仅只有键值,所以直接对其进行解引用就可以得到相应的键值。

    6.multimap和multiset容器

    multimap容器是是一个键对应多个不同的值。multiset就是存在多个相同的键。并且multimap不支持下标操作。

    multimap和multiset容器的添加删除元素:

    添加元素的操作是采用insert操作来实现的。插入之后相应的键值就是按照从小到大的顺序排列的。

    删除元素的操作是采用erase来实现的。该删除操作是删除所有相同的键的元素。

    7.multimap和multiset容器中查找元素

    查找元素主要通过find和count来个成员函数共同来完成,通过find成员函数找到相应键的第一个位置,count成员函数统计该键出现的次数。然后再利用一个循环将这相同键的元素都输出。

    如:multimap<string,int>imulmap;

    string s;

    while(cin>>s){

    imulmap.insert(make_pair(s,2));}

    string s1;cin>>s1;

    multimap<string,int>::iterator it=imulmap.find(s1);

    multimap<string,int>::size_type ix=imulmap.count(s1);

    for(multimap<string,int>::size_type itt=0;itt!=ix;++itt)

    cout<<it->first<<" "<<it->second;

    8.与众不同的面向迭代器的解决方案

    以下操作适合所有的关联容器:

    m.lower_bound(k) 返回一个迭代器,指向键不小于k的第一个元素

    m.upper_bound(k)   返回一个迭代器,指向键大于k的第一个元素

    m.equal_range(k)    返回一个迭代器的pair对象,它的first成员等价于m.lower_bound(k),而second成员等价于m.upper_bound(k)  

    如:multimap<string,int>imulmap;

    string s;

    while(cin>>s){

    imulmap.insert(make_pair(s,2));}

    string s1;cin>>s1;

    multimap<string,int>::iterator beg=imulmap.lower_bound(s1),end=imulmap.upper_bound(s1);

    while(beg!=end){

    cout<<beg->first<<" "<<beg->second<<endl;

    ++beg;}

    使用equal_range函数:multimap<string,int>imulmap;

    string s;

    while(cin>>s){

    imulmap.insert(make_pair(s,2));}

    string s1;cin>>s1;

    pair<multimap<string,int>::iterator,multimap<string,int>::iterator> iter=imulmap.equal_range(s1);

    while(iter.first!=iter.second){

    cout<<iter.first->first<<" "<<iter.first->second<<endl;

    ++iter.fisrt;}

  • 相关阅读:
    冲刺第一天
    Nacos微服务体系配置管理
    Nacos配置中心客户端程序
    Nacos配置中心最佳实践
    SpringCloud2020整合Nacos-Bootstrap配置不生效的解决
    18.SpringCloud Alibaba Nacos服务注册和配置中心
    17、SpringCloud Alibaba入门简介
    SpringBoot热部署
    SpringBoot请求处理-常用参数注解使用
    5、创建springcloud alibaba工程
  • 原文地址:https://www.cnblogs.com/ljy2013/p/3307877.html
Copyright © 2020-2023  润新知