ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++第10课 STL容器 (九)

2021-09-09 20:01:11  阅读:120  来源: 互联网

标签:10 cout map STL mmData C++ str insert pair


1.map(映射)

/*
    map:映射,一种对应关系
    自带排序(按照键去排序)
    键唯一,相同键采用最后一次插入的数据,覆盖的方式去处理
    存储的数据是: 数对类型(pair)
*/
void testMap()
{
    map<int, string>str;
    //1.pair对象插入
    str.insert(pair<int, string>(1, "小可爱"));
    //2.数组法插入
    str[-1] = "小甜心";
    //3.间接通过make_pair构建一个pair类型
    str.insert(make_pair<int, string>(2, "小宝贝"));
    str[-1] = "小美女";
    for (auto v : str) {
        cout << v.first << "\t" << v.second << "\t";
    }
    cout << endl;

    map<int,string>::iterator iter=str.begin();
    while (iter != str.end()) {
        cout << (*iter).first << "\t" << (*iter).second << "\t";
        iter++;
    }
    cout << endl;
}
class MM
{
public:
    MM() = default;
    MM(string name, int age) :name(name), age(age) {}
    string getName() { return name; }
    int getAge() { return age; }
    bool operator<(const MM& object) const
    {
        return this->age < object.age;
    }
    friend ostream& operator<<(ostream& out, const MM& mm)
    {
        out << mm.name << "\t" << mm.age;
        return out;
    }
protected:
    string name;
    int age;
};
class GG
{
public:
    GG() = default;
    GG(string name, int age) :name(name), age(age) {}
    string getName() { return name; }
    int getAge() { return age; }
    friend ostream& operator<<(ostream& out, const GG& gg)
    {
        out << gg.name << "\t" << gg.age;
        return out;
    }
protected:
    string name;
    int age;
};
template <class _Ty1, class _Ty2>
void print(map<_Ty1, _Ty2>& temp)
{
    for (auto v : temp)
    {
        //int                        MM
        cout << v.first << "\t" << v.second << endl;
    }
}
void testUserData()
{
    //可以任意对应
    map<int, MM> mmData;
    mmData[1] = MM("小美人", 18);
    mmData[3] = MM("小可爱", 29);
    mmData[2] = MM("小甜心", 28);
    print(mmData);
    map<MM, GG> mmgg;   //less<int> <
    mmgg[MM("张三", 18)] = GG("李四", 20);
    mmgg[MM("王五", 29)] = GG("赵六", 34);
    mmgg[MM("美女", 45)] = GG("帅哥", 55);
    cout << mmgg[MM("美女", 45)].getName() << mmgg[MM("美女", 45)].getAge() << endl;
    print(mmgg);
    //<
    map<string, string, less<string>>  strData; //和默认是一样,从小到大
    //>
    map<string, string, greater<string>> greaterData;    //从大到小

}
void testmultimap()
{

    multimap<int, string> mulData;
    //注意点: 多重映射不能采用下标法赋值
    mulData.insert(make_pair<int, string>(3, "测试结果"));
    mulData.insert(pair<int, string>(1, "多重映射"));
    mulData.insert(make_pair<int, string>(1, "多重映射2"));
    for (auto v : mulData)
    {
        cout << v.first << "\t" << v.second << endl;
    }
}
void testNestMap()
{
    map<int, map<string, MM>>  mapData;
    map <string, MM> mmData;
    mmData["美女"] = MM("小美", 18);
    mapData[0] = mmData;
    cout << mapData[0]["美女"].getName() << mapData[0]["美女"].getAge() << endl;
}

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

标签:10,cout,map,STL,mmData,C++,str,insert,pair
来源: https://www.cnblogs.com/creature-lurk/p/15248574.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有