• 第13章 map映照容器


    /*
    
      第13章 map映照容器
       13.1 map技术原理
       13.2 map应用基础
       13.3 本章小结
    
    */
    
    
    //  第13章 map映照容器
    //   13.1 map技术原理 ---------------------------------------------------------------------------------
    
    //   13.2 map应用基础 ---------------------------------------------------------------------------------
    
    //202 [] 插入
    #include <map>
    #include <iostream>
    int main(void)
    {
      using namespace std;
      //创建map容器对象m
      map < const char *, float > m;
      //插入元素(水果,单价)
      m["apple"] = 3.6f;
      m["orange"] = 3.2f;
      m["banana"] = 1.8f;
      m["pear"] = 2.3f;
      m["lichee"] = 6.3f;
      //打印元素
      cout << "苹果价格: " << m["apple"] << "元/斤
    ";
      cout << "桔子价格: " << m["orange"] << "元/斤
    ";
      cout << "香蕉价格: " << m["banana"] << "元/斤
    ";
      cout << "雪梨价格: " << m["pear"] << "元/斤
    ";
      cout << "荔枝价格: " << m["lichee"] << "元/斤
    ";
      return 0;
    }
    
    
    
    //203
    #include <map>
    #include <iostream>
    struct StudentInfo
    {
      //学生信息结构体
      char *name;
      int year;
      char *addr;
    };
    struct StudentRecord
    {
      //学生记录结构体
      int id; //学号,作键值
      StudentInfo sf; //学生信息,作映照数据
    };
    
    int main(void)
    {
      using namespace std;
      //学生数据
        StudentRecord srArray[] = {  //3笔学生记录
                    { 1, "李强", 21, "北京" },
                    { 2, "王文", 29, "上海" },
                    { 3, "张三", 38, "深圳" }
        };
      //创建map容器对象m,管理学生记录
      map < int, StudentInfo > m;
      //装入3笔学生记录
      for(int j = 0; j < 3; j++)
        m[srArray[j].id] = srArray[j].sf;
      //反向迭代器遍历元素
      map < int, StudentInfo > ::reverse_iterator i, iend;
      iend = m.rend();
      cout << "学号    " << "姓名    " << "年龄    " << "地址    " << endl;
      for(i = m.rbegin(); i != iend; i++)
        cout << (*i).first << '    ' << (*i).second.name << '    ' << (*i).second.year <<
          '    ' << (*i).second.addr << '    ' << endl;
      return 0;
    }
    
    
    /*
    The pair::second element in the pair is set to true if a new element was inserted 
    or false if an element with the same value existed.
    */
    //206
    
    #include <map>
    #include <iostream>
    struct StudentRecord
    {
      //学生记录结构体
      struct StudentInfo
      {
        char *name;
        int year;
        char *addr;
      };
      StudentRecord(int id_, char *name_, int year_, char *addr_)
      {
        id = id_;
        sf.name = name_;
        sf.year = year_;
        sf.addr = addr_;
      }
      int id; //学号,作键值
      StudentInfo sf; //其他信息
    };
    
    int main(void)
    {
      using namespace std;
      //创建map容器对象m
      typedef map < int, StudentRecord::StudentInfo > studentmap;
      studentmap m;
      pair < studentmap::iterator, bool > p;
      //插入第一条学生记录
      StudentRecord student1 = StudentRecord(1, "焦焦", 21, "北京");
      pair < int, StudentRecord::StudentInfo > 
        pairStudent1(student1.id, student1.sf);
      p = m.insert(pairStudent1);
      if(!p.second)
        cout << "插入学生记录失败:
    " << student1.id << '    ' << student1.sf.name <<
          '    ' << student1.sf.year << '    ' << student1.sf.addr << '    ' << endl << endl;
      //插入第二条学生记录
      StudentRecord student2 = StudentRecord(2, "敦介", 18, "上海");
      pair < int, StudentRecord::StudentInfo > pairStudent2(student2.id,
        student2.sf);
      p = m.insert(pairStudent2);
      if(!p.second)
        cout << "插入学生记录失败:
    " << student2.id << '    ' << student2.sf.name <<
          '    ' << student2.sf.year << '    ' << student2.sf.addr << '    ' << endl << endl;
      //插入第三条学生记录
      StudentRecord student3 = StudentRecord(3, "译尹", 20, "深圳");
      pair < int, StudentRecord::StudentInfo > pairStudent3(student3.id,
        student3.sf);
      p = m.insert(pairStudent3);
      if(!p.second)
        cout << "插入学生记录失败:
    " << student3.id << '    ' << student3.sf.name <<
          '    ' << student3.sf.year << '    ' << student3.sf.addr << '    ' << endl << endl;
      //插入键值重复的学生记录,失败
      StudentRecord student4 = StudentRecord(3, "李强", 26, "天津");
      pair < int, StudentRecord::StudentInfo > pairStudent4(student4.id,
        student4.sf);
      p = m.insert(pairStudent4);
      if(!p.second)
        cout << "插入学生记录失败:
    " << student4.id << '    ' << student4.sf.name <<
          '    ' << student4.sf.year << '    ' << student4.sf.addr << '    ' << endl << endl;
      //记录搜索
      studentmap::iterator i = m.find(2);
      cout << "搜索出学号为2的记录:
    " << (*i).first << '    ' << (*i).second.name <<
        '    ' << (*i).second.year << '    ' << (*i).second.addr << '    ' << endl << endl;
      return 0;
    }
    
    
    
    //   13.3 本章小结 ---------------------------------------------------------------------------------

    TOP

  • 相关阅读:
    存储过程和函数
    linux命令行执行db2存储过程
    使用 springmvc请求 返回 字符串时 ,中文出现乱码
    shiro + struts2 在action 中使用 shiro 注解 @requiresPermissions 报错: 方法找不到,类初始失败
    spring 注解 注入属性 和 注解完成bean定义
    hibernate4 , spring3 使用 org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean 报错 Implementing class
    action spring 注入错误,如果检查各项注入都没有错误时,考虑struts 是否配置了namespace(如果你有多个namespace="/")
    urlrewritefilter 本地windowsxp 上正常 使用 ,但是 到linux服务器 上 则时好时坏 ,不起作用
    filter 死循环(tomcat 启动完成 ,自动执行filter.dofilter,导致tomcat 启动超时) , tomcat 启动和 servers 启动 不同
    项目 solrcloud / zookeeper 搭建
  • 原文地址:https://www.cnblogs.com/xin-le/p/4111417.html
Copyright © 2020-2023  润新知