用map 關聯容器以及迭代器實現遍歷實現統計那個數出現次數最多


 1 #include <iostream>
 2 #include <map>
 3 using namespace std;
 4 int main()
 5 {
 6     map<int,int> m;
 7     int n,v;
 8     cin>>n;    //這比如輸入3
 9     cout<<m[v]<<endl;
10     for(int i=0;i<n;i++){    //這里就循環三次
11         cin>>v;                //這里就需要輸入三個數
12         m[v]++;         //如果依次輸入的是2 3 3則m[2]=1,m[3]=1,m[3]=2
13         cout<<m[v]<<endl; 
14     }
15     int ans,count=0;
16     for(map<int,int>::iterator it=m.begin();it!=m.end();it++)
17         if(it->second>count){
18             count=it->second;   //這里的it->second是指map<int,int>中的后面的value值
19             ans=it->first;          //it—>first是指map<int,int>中的后面的key值
20         }
21         cout<<ans<<endl;
22      return 0;
23 }
全部源代碼

map<int,int> m;
int n,v;
cin>>n; //這比如輸入3
cout<<m[v]<<endl;
for(int i=0;i<n;i++){ //這里就循環三次
cin>>v; //這里就需要輸入三個數
m[v]++; //如果依次輸入的是2 3 3則m[2]=1,m[3]=1,m[3]=2
cout<<m[v]<<endl;
}

  1. 這里要說一下map<int,int>是一c++中關聯容器的一種,在這里可以看成一個鍵值對,鍵值對就是key:value的形式(列如“pig”:“女神”)。m[v]的初始值默認為0。這里m[v]是map中額value。然后m[v]中的v如果是同一個就會按代碼上的++。所以如果依次輸入的是2 3 3則m[2]=1,m[3]=1,m[3]=2。按照這個第二次輸如的3,因為之前沒有過。所以為m[v]=1,然后第三個數進來,還是3,因為此時的key為3的已經有了。所以此時的m[v]為2

int ans,count=0;
for(map<int,int>::iterator it=m.begin();it!=m.end();it++)
if(it->second>count){
count=it->second; //這里的it->second是指map<int,int>中的后面的value值
ans=it->first; //it—>first是指map<int,int>中的后面的key值
}

  •         這里是用的一個迭代器。詳情看c++相關知識
  • begin()+end()是迭代器的相關函數,代表開始和結束
  • it->first指map里面的key(即前面的值)
  • it->second值map里面的value(后邊的值)
  • 然后ans為統計之后的最高值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM