美文网首页程序员C++
c++ STL中map函数的用法(上)

c++ STL中map函数的用法(上)

作者: 帅气的浮生 | 来源:发表于2017-12-06 21:42 被阅读0次

    [TOC]

    这几天由于C++程序设计的原因,我花了3天时间自学了一下C++。由于课程设计涉及到了MYSQL数据库的操作,之前用到的编程语言如JAVA、PHP都有类似键值对数组的东西。而C++中的map()函数也是一样的。

    map函数是什么?

    Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!

    简单的来说: Map是STL的一個容器,它提供一對一的hash。
    它的标准形式为

    Map<int, string> mapStudent;

    • 第一个为关键字(key),再函数中只能map出现一次()
    • 第二个为该关键字的值 (value)
      形式就像 arr{
      [0]=>['id']
      }
      这种形式的数组

    map函数的构造方法

    刚刚我们上面说的
    Map<int, string> mapStudent;
    只是构造函数的一种,还有一些常用的构造函数
    如:

    A B
    map<string , int >mapstring map<int ,string >mapint
    map<sring, char>mapstring map< char ,string>mapchar
    map<char ,int>mapchar map<int ,char >mapint

    map的使用

    1. 引入头文件
    #include<map>  //引入map头文件
    #include<string> //为了等会好用sting类
    using namespace std; //一定要写上命名空间
    
    1. 变量声明
    Map<int,string> test;
    
    1. 插入数据
      Map插入数据有三种方式
    • 用insert函數插入pair
    test.insert(pair<int, string>(1, "test"));
    

    例子程序:

    #include<map>
    #include<string>
    #include<iostream>
    using namespace std;
    int main()
    {
        map<int, string > test;
        test.insert(pair<int, string>(1, "test"));
        cout << 输出<< test[1];
        return 0;
    }
    

    结果:
    输出 test

    • 用"array"方式插入
    test[0]= "xusupeng";
    

    如:

    int main()
    {
        map<int, string > test;
        test[1] = "xusupeng";
        cout << test[1];
        return 0;
    }
    
    

    结果:
    xusupeng

    • 用insert函数插入value_type数据
      这种和第一种插入效果是一样的,再这里就不再赘述了。

    • 3种插入方式的区别
      虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值。大家可以自己代码去测试一下

    1. 遍历map(一维数组)
      C++的遍历也可以和java一样用iterator
      1.定义一个迭代器指针,使这个指针指向map的开始位置
      1. it->first即我们定义数组的key,it->second即我们的值
    #include<map>
    #include<string>
    #include<iostream>
    using namespace std;
    int main()
    {
        typedef map<int, string> Map;
        Map test;
        Map::iterator it;    //定义一个迭代器指针
        test[0] = "test1";
        test[2] = "test2";
        test[3] = "test3";
        test[4] = "test4";
        for (it = test.begin(); it != test.end(); it++)  //指针指向map数组的开头位置
        {
            cout << it->first <<  "   "<<it->second<<endl;
        }
        return 0;
    }
    

    代码结果:
    0 test1
    2 test2
    3 test3
    4 test4

    (二维数组)

    抱歉我试了半天都不能行,如果有会的请教教我

    参考:
    [1]:http://blog.csdn.net/sunshinewave/article/details/8067862
    [2]:http://www.jb51.net/article/96053.htm
    [3]: http://blog.csdn.net/sunquana/article/details/12576729

    相关文章

      网友评论

        本文标题:c++ STL中map函数的用法(上)

        本文链接:https://www.haomeiwen.com/subject/frulixtx.html