###前提・実現したいこと
競技プログラミングの問題でC++で最頻値を求めるコードを
調べて実装したのですが、コードの意味が理解できず困っています。
###発生している問題・エラーメッセージ
後述するコードの
m[S]++;
が変数m[S]に対して加算しているのか、
連想配列のintに対して加算しているのかがよくわかりません。
###該当のソースコード
C++
1#include <iostream> 2#include <string> 3#include <vector> 4#include <algorithm> 5#include <map> 6#include<cstdio> 7using namespace std; 8 9int main() 10{ 11 int N, max = 0; 12 string S, ans; 13 /*scanf("%d", &N);*/ 14 map<string, int> m; 15 cin >> N; 16 for (int i = 0; i < N; i++) 17 { 18 cin >> S; 19 m[S]++; 20 if (max < m[S]) { 21 max = m[S]; 22 ans = S; 23 } 24 } 25 cout << ans << endl; 26 return 0; 27} 28
連想配列についての理解が乏しいので、コード全体について
解説いただけると幸いです。
よろしくお願いいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
該当する競技プログラミングの問題
https://beta.atcoder.jp/contests/abc008/tasks/abc008_2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/05 12:51