thứ nhất là bỏ code vô giữa 3 dấu ``` chứ ko phải 3 dấu *** nha :V
thứ hai là std::map<KeyType, ValueType>
trong C++ có khởi tạo sẵn giá trị của m[key]
là giá trị mặc định của ValueType
, ở đây ValueType
là int
nên nó mặc định là 0, em ko cần ktra if(m.find(a[i]) == m.end())
làm gì đâu. Viết lại thế này là được:
for(int i=0; i<a.size(); i++)
m[a[i]]++;
thứ ba là nếu xài C++11/C++17 thì còn ngắn và đẹp hơn nữa:
// C++11
for (auto& s : a)
m[s]++;
vòng for ở dưới nếu xài C++11 thì ngắn hơn tí:
// C++11
for (auto it = begin(m); it != end(m); it++)
cout << it->first << ": " << it->second << endl;
nhưng viết thế này thì ngắn và đẹp hơn:
// C++11
for (auto& kv : m)
cout << kv.first << ": " << kv.second << endl;
nếu xài C++17 thì ngắn và đẹp hơn nhiều:
// C++17
for (auto& [key, value] : m)
cout << key << ": " << value << endl;
em viết for (int i = 0; ...)
nhiều chán rồi thì xài for (... : ...)
cho quen =] Ngôn ngữ nào cũng có vòng lặp kiểu này, gọi là for-in for-each :V :V , ko chỉ C++11 mới có đâu.