zoukankan      html  css  js  c++  java
  • 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.无序容器

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

  • 相关阅读:
    Android 操作系统的内存回收机制(转载)
    如何减少代码中的分支语句
    Android中动画学习
    Android中 AsyncTask
    Linux安装后更新系统
    看百度宣传片
    可爱的linux mint 11
    ubuntu 修改root密码
    SHA256加密算法封装[我的代码库]
    使用maven,svn和CruiseControl做持续集成
  • 原文地址:https://www.cnblogs.com/penuel/p/13744191.html
Copyright © 2011-2022 走看看