• C++关联容器


    《C++ Primer》

    关联容器

    有8种 其实就是map 和set

    map 普通map

    mutimap 就是可重复的map

    unordered_map 就是无序的map

    unordered_mutimap 就是无序的且可重复的map

    然后set同理,所以一共有8个

    可以使用列表初始化

    // justForTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    
    #include <C:UsersDELLsource
    eposLibrarySystemdataStructure.cpp>
    
    #include <vector>
    
    #include <string>
    
    #include <iostream>
    
    #include <map>
    
    #include <set>
    
    #include <unordered_map>
    
    #include <unordered_set>
    
     
    
    using namespace std;
    
     
    
    int main()
    
    {
    
      set<int> testset = { 1,2,3 };
    
       map<string, int> mp;
    
       //初始化 set和map都是模板类型的
    
       //map的元素是pair对
    
       mp = { {"annotation",1} ,{"double",2} };
    
     
    
       //map的下标操作,map的下标操作比较特殊,如果是这样子的,annotation关键字对应的值(键值对)本来是1,就会赋2
    
       mp["annotation"] = 2;
    
     
    
       mp["trible"] = 3; //这样会先查找,找不到啊,那会插入trible,然后赋值0,然后再赋值3
    
     
    
       /*那map的查找操作,应该用find 或者count 那么find很好,如果没找到 就会返回尾迭代器*/
    
       mp.find("annotation");
    
       //所以就有了find==end 这种好操作 要是等于end,就意味着没找到
    
       if(mp.find("annotation1  ")==mp.end())
    
    ​    cout << "没找到" << endl;
    
     
    
       //打印map的每一个键值对
    
       for (const auto& x : mp)
    
       {
    
    ​     cout << "关键字是" << x.first << " 值是" << x.second << endl;
    
       }
    
       testset.insert(3);
    
       testset.insert(5);
    
       for (auto it=testset.begin();it!=testset.end();it++)
    
    ​     cout << *it;
    
       //迭代器 cbegin() 和begin() 这个cbegin是const
    
       /* begin()     Return iterator to beginning (public member function )
    
    ​    cbegin()    Return const_iterator to beginning (public member function )
    
       */
    
     
    
       /*
    
    ​    set的迭代器是const的 只能用迭代器来访问这些只读元素 不能用迭代器来修改
    
       */
    
       //set插入元素用insert可以是两个迭代器,也可以直接是;
    
     
    
       /* key_type 是键值对的键的类型 value_type是键值对的值的类型
    
    ​    且对于set来说键,值都是一样的类型
    
    ​    所以set的这两个都相同
    
    ​    但是对于map来说,就不一样了
    
    ​    map的key那个好理解,就是键的类型
    
    ​    但是map的value_type却是指的是pair这种键值对的类型
    
    ​    那么值的类型,我们用了一个特别的mapped_tyepe
    
       */
    
       map<string, int>::mapped_type v1 = 2;
    
     
    
       map<string, int>::value_type v2 = { "string",1 };
    
     
    
       // map<string, int>::value_type v2 = 1; 这句就会报错
    
     
    
       map<string, int>::key_type v3 = " stign";
    
    }
    
  • 相关阅读:
    中文简体汉字
    文件下载
    javaBean
    servlet和JSP笔记(EL表达式、javabean、jsp九大内置对象等)
    Http请求和响应
    Eclipse快捷键(可更新)
    反射笔记①
    泛型, 枚举,单例模式
    Ubuntu 14.04 安装 A卡HD7750 官方闭源 显卡驱动
    C语言--二维数组,字符串数组,多维数组
  • 原文地址:https://www.cnblogs.com/yahoo17/p/12346034.html
Copyright © 2020-2023  润新知