C++ map 容器学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zh1204190329/article/details/81673745

map学习

最近做题的时候对多关键字排序的处理上存在问题。发现map容器对排序有较好作用,学习一下。

参考代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <map>

using namespace std;
typedef struct tagstuinfo {
    int id;
    string name;
    bool operator <(tagstuinfo const &_a) const {
        if (id < _a.id)
            return true;
        if (id == _a.id)
            return name.compare(_a.name) < 0;
        return false;
    }
} stuinfo, *pstuinfo;

int main()
{
    map<int, string> mapStudent;
    map<int, string>::iterator iter;

    pair<map<int, string>::iterator, bool> Insert_Pair;
//  mapStudent.insert(pair<int, string>(1, "student1"));
//  mapStudent.insert(pair<int, string>(2, "student2"));
//  mapStudent.insert(pair<int, string>(3, "student3"));

    mapStudent[1] = "student1";
    mapStudent[2] = "stu2";
    mapStudent[3] = "stu3";

    mapStudent.insert(map<int, string>::value_type(4, "student1"));
    mapStudent.insert(map<int, string>::value_type(6, "student2"));
    mapStudent.insert(map<int, string>::value_type(5, "student3"));

    Insert_Pair = mapStudent.insert(pair<int, string>(7, "stu7"));
    if (Insert_Pair.second == true)
        cout << "Inser success" << endl;
    else
        cout << "Insert failed" << endl;

    Insert_Pair = mapStudent.insert(pair<int, string>(7, "stu8"));
    if (Insert_Pair.second == true)
        cout << "Inser success" << endl;
    else
        cout << "Insert failed" << endl;


    for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
        cout << iter->first << " " << iter->second << endl;

    cout << mapStudent.size() << endl;

    map<int, string>::reverse_iterator iter2;
    for (iter2 = mapStudent.rbegin(); iter2 != mapStudent.rend(); iter2++)
        cout << iter2->first << " " << iter2->second << endl;

    iter = mapStudent.find(1);
    if (iter != mapStudent.end())
        cout << "Find, the value is " << iter->second << endl;
    else
        cout << "Do not find " << endl;


    map<stuinfo, int> mapstu;
    map<stuinfo, int>::iterator iter3;
//  map<Studentinfo, int>::iterator iter;
    stuinfo stu;
    stu.id = 1;
    stu.name = "zhang";
    mapstu.insert(pair<stuinfo, int>(stu, 90));
    stu.id = 2;
    stu.name = "hao";
    mapstu.insert(pair<stuinfo, int>(stu, 80));
    for (iter3 = mapstu.begin(); iter3 != mapstu.end(); iter3++)
        cout << iter3->first.id << " " << iter3->first.name << " "
                << iter3->second
                << endl;
    return 0;
}



猜你喜欢

转载自blog.csdn.net/zh1204190329/article/details/81673745