• C++关联容器


    1.简介

    关联容器支持高效的关键字查找和访问,两个主要的关联容器类型是map和set。
    map中的元素是一些关键字和值,关键字起索引作用
    set中只包含一个关键字。

    2.汇总

    有序容器在插入时,会自动插入到合适的位置,使整个集合有序






    3.分类使用

    1.有序容器

    set<int> a = {1,2,9};
    //插入元素
    a.insert({5,6});
    for(auto it = a.begin();it != a.end();it++)	cout << *it;//输出12569,插入时自动排序,
    
    //插入一个区间
    set<int b> = {4,5};
    auto first = b.begin();
    auto second = b.end();
    a.insert(first,second);  //将b的所有元素插入到a中
    
    //删除元素
    a.erase(3);  //删除关键字为3的元素,返回删除的个数
    a.erase(first,second);  //删除区间,返回指向second
    a.erase(iterator); //删除迭代器指向的元素
    
    map<string, int> b2 = { {"first",3}};  //注意里面还有一个大括号
    
    //插入元素
    b2.insert(make_pair("second",5));  //使用insert插入
    b2.insert({"second",5});
    b2.insert(map<string,int>::value_type("second",5));
    b2["second"] = 5;  //使用下标插入,如果有该关键字的话,会直接更改值,如果没有会插入
    b2.at("first") = 4; //更改值,如果没有关键字,会发生错误
    
    //删除元素
    b2.erase("second");  //删除关键字为second的元素
    auto pr = b2.begin();
    b2.erase(pr); //删除pr指向的元素
    

    map的遍历
    每一个元素可以看成是pair类型,第一个key用it->first访问,值用it->second来访问。同样可以采用下标来访问

    //multimap支持重复的关键字,故不能使用下标来进行访问和修改
    multimap<string, int> b2 = { {"first",3},{ "first",5 } };  
    b2.insert({ "second", 6 });
    for (auto it = b2.cbegin(); it != b2.cend(); it++)
    cout << it->first << "  " << it->second << endl;
    
    //查找元素
    auto num = b2.count("first");
    auto iter = b2.find("first");
    while (num)
    {
    	cout << iter->first << ":" << iter->second << endl;
    	iter++;
    	num--;
    }
    
    

    2.无序容器

    无序容器的操作基本和有序容器一致,多了一些特殊操作:

  • 相关阅读:
    uniapp 画圆形或多边形雷达图
    uniApp开发之公用配置文件common.js
    FastAdmin 表格排序
    fastadmin SelectPage field显示多个字段
    PHP装饰器模式
    PHP原型模式,(理解:创建并初始化对象,再复制一个对象避免重复初始化)
    PHP设计模式-观察者模式
    为什么 echo 3 . print(2) . print(4) . 5 . 'c'的结果是45c2131
    PHP数组式访问接口ArrayAccess用法分析
    浏览器兼容性问题总结
  • 原文地址:https://www.cnblogs.com/penuel/p/13744191.html
Copyright © 2020-2023  润新知