map函数的简单使用,和用pair判断的有无正确插入

来源:互联网 发布:莫合烟淘宝上哪里有卖 编辑:程序博客网 时间:2024/06/06 01:36


#include <iostream>#include <map>#include <string>using namespace std;struct Student{    string name;    int score;};Student students[5] = {{"Jack",89},{"Tom",74},{"Cindy",87},{"Alysa",87},{"Micheal",98}};typedef map<string,int> MP ;//  让我好好研究一下这到底是在干啥//  首先,从上面看来,创建了一个Student是为了配合map 的使用//  又定义了一个结构数组,来储存各种结构。-------这些都同原来的multi map一致int main(){    MP mp;    for (int i = 0;i < 5;i ++)        mp.insert(make_pair(students[i].name,students[i].score));        //开始赋值,话说这个makepair用的好多啊    cout << mp["Jack"] << endl; // 输出 89    for (MP::iterator i = mp.begin();i != mp.end();i ++)        cout << "(" << i->first << "," << i->second << ")";    // 看来是不改变顺序的    cout << endl;    //这个输出就厉害了,他直接像数组一样应用了first,并且直接赋值了    mp["Jack"] = 60;    //修改名为“Jack”的元素的second    for (MP::iterator i = mp.begin();i != mp.end();i ++)        cout << "(" << i->first << "," << i->second << ")";    //输出;    cout << endl;    //又定义了一个,来查看能重复输入    Student st;    st.name = "Jack";    st.score = 99;    //这个判断厉害了,好好学着点    //这是一个指向pair的指针,这个pair中包括了一个原map的迭代器,还有一个布尔值    //错了啊啊啊啊,p 不是指针,只是一个pair的名称罢了    pair<MP::iterator,bool> p = mp.insert(make_pair(st.name,st.score));    //话说,这到底是怎么---的啊    //这个执行了一个插入的操作,但是是否成功呢,与set一致    if(p.second){        cout << "(" << p.first->first << ",";        cout << p.first->second << ")inserted" << endl;    }    else        cout << "insertion failed" << endl;    //好了,看不懂就看不懂,下一个    mp["Harry"] = 78;    //哦,现在,我好像发现了什么,看来map中所以的操作都是依靠first来实现的    MP::iterator q = mp.find("Harry");    cout << "(" << q->first << "," << q->second << ")" << endl;    return 0;}

然后,经过了我的过夜观察大法,现在所看到的难点有

一个函数判断能否插入。

    pair<MP::iterator , bool> pt = mp.insert(make_pair(a.name,a.score));    if (pt.second)        cout << "Nothing has happen" << endl;    else        cout << "Yes,you did it" << endl;
就是这个,一定要多做。