编辑代码

#include <iostream>
#include <map>
#include <set>
using namespace std;
/*
课堂目标:
    掌握map和set的使用方法

知识点一:什么是map
    类似于Python中的字典,一种用于存储关联型数据的结构
    特性:
        会根据字典序,对数据进行排序,以键的前后关系来排序
        键唯一,值不唯一
    a:b
    //创建map: map <键类型, 值类型> 结构名称
    map <string, int> Score ={{"Kevin", 99},{"amy",98},{"Lucy", 87}, {"kevin", 100},{"amy",100}};

    //添加/修改(键不存在,将键值对添加到map中,存在的话,更新键值对)
    Score["coco"] = 87;
    Score["amy"] = 89;
    
    //查询键值对数量/是否为空
    cout<<Score.size()<<" "<<Score.empty()<<endl;

    //查询元素位置
    if (Score.find("Lucy") != Score.end()) cout<<"true"<<endl;

    //遍历
    map <string, int> ::iterator it;
    for (it=Score.begin(); it!= Score.end(); it++) cout<<it->first<<" "<<it->second<<endl;

    例题:
    输入一个字符串,统计每个字母(区分大小写)出现的次数,忽略非字母字符,并按照字母顺序输出结果。
    //输入
    string str;
    cin>>str;
    
    //运算
    map <char, int> mp;
    for (int i=0; i<str.size(); i++){
        if ( mp.find(str[i])!=mp.end() ) mp[str[i]]++;      //已经出现的
        else mp[str[i]]=1;                                  //没有出现的
    }
    
    //输出
    map <char, int> ::iterator it;
    for (it = mp.begin(); it!=mp.end(); it++) cout<<it->first<<" "<<it->second<<endl;`
    例题:
    班级中有n名同学,班级举办活动,老师让 amy帮同学们买一些水果,
    请输入每个同学喜欢的水果名称,每个同学只允许写一样,最后统计输出,需要买水平的数量
    例如
    输入:
    3
    apple
    banana
    apple
    输出
    apple 2
    banana 1

    
    int n;
    cin>>n;
    map <string, int> mp;
    for (int i=0; i<n; i++){
        string fruitName;
        cin>>fruitName;
        if ( mp.find(fruitName)!=mp.end() ) mp[fruitName]++;      //已经出现的
        else mp[fruitName]=1;
    }
    map <string, int> ::iterator it;
    for (it = mp.begin(); it!=mp.end(); it++) cout<<it->first<<" "<<it->second<<endl;

知识点二: set
    1、值唯一,
    2、值有序
    3、筛选

    set <string> st = {"coco","kevin","amy","coco","Kevin"};

    //添加数据
    st.insert("jo");
    //查找
    if ( st.find("jo")!=st.end() ) cout<<"yes";

    //判断是否为空
    cout<<st.empty()<<" "<<st.size();

    //遍历set
    set <string> ::iterator it;
    for(it=st.begin(); it!=st.end(); it++) cout<<*it<<" ";

    例题:
    输入一个字符串,输出字符串中包含哪些字符
    string str;
    cin>>str;

    set <char> chr;
    for (int i=0;  i<str.size(); i++) chr.insert(str[i]);
    
    set <char> ::iterator it;
    for (it=chr.begin(); it!=chr.end(); it++) cout<<*it<<" ";
*/
int main() {



	return 0;
}