警告警告!!!利用map统计时,如果有多个最高频数字,返回的是最小key的最高频数字,不是最先出现的!!!

#include<bits/stdc++.h>
using namespace std;
int main(){
    map<int,int> myMap;
    int A[20] = {0};
    int n;
    scanf("%d", &n);
    //数组数据输入
    for(int i = 0; i < n; i++){
    	//cin >> A[i];
        scanf("%d",&A[i]);   
    }
    //map数据传入 
    for(int i = 0; i < n; i++){
	    if(myMap.find(A[i])==myMap.end()){
	            myMap[A[i]] = 1;
	        }
	        else{
	            myMap[A[i]] += 1;
	        }
    }
    //注意:map如果多个高频,返回最小key,并不是第一次出现的
	//方案:首先,用数组保存map中出现最多次的多个数字,然后去找nums在A[]中的出场顺序 
	//查找最大频率数字key
	int key,max_n;
    key=myMap.begin()->first,max_n=myMap.begin()->second;
    for(auto &it : myMap){
        if(it.second > max_n){max_n = it.second;key = it.first;}
    }
    //cout << key << endl;
    //cout << max_n << endl;
    //找出最高频的全部数字 
    int B[20] = {0};
    int index = 0;
    for(auto &it : myMap){
    	if(it.second == max_n){B[index++] = it.first;}	
	}
	//如果只有一个高频词 
	if(index == 1){
		cout << key << endl;
	}
	else{
		int max_num = 0; 
		//高频词输出测试
//		for(int i = 0; i < index; i++){
//			cout << "i = " << i << " B[i] = " << B[i] << endl;
//		} 
		//找出第一个高频词
		//通过遍历B最高频数字,和A记录数组,返回第一个出现的最高频数字
		bool flag = false; 
		for(int i = 0; i < n; i++){
			for(int j = 0; j < index; j++){
				if(A[i] == B[j]){
					max_num = A[i];
					flag = true;
					break;
				}
			}
			if(flag){break;}
		}
		//输出结果
		cout << max_num << endl;	
	}
 
    return 0;
}