#include <algorithm>
#include <iterator>
#include <iostream>
#include <map>
#include <utility>
#include <vector>
using namespace std;
struct pair2ndGreater
{
template<class T, class U>
bool operator()(pair<T,U> const& a, pair<T,U> const& b) const
{ return a.second > b.second; }
};
int main()
{
map<char,int> histogramm;
const char* s = "Dies ist ein Text";
while (*s) ++histogramm[*s++];
vector<pair<char,int> > vec (histogramm.begin(),histogramm.end());
sort(vec.begin(),vec.end(),pair2ndGreater());
for (int i=0, e=vec.size(); i<e; ++i) {
pair<char,int> const& p = vec.at(i);
cout << '"' << p.first << "\" --> " << p.second << '\n';
}
}