#include <iostream>
#include <algorithm>
#include <set>
#include <iterator>
#include <string>

int main()
{
	typedef std::multiset<std::string> mySet;
    typedef std::multiset<std::string>::iterator mySetItr;

	mySet mWords;
	
	mWords.insert("A");
	mWords.insert("A");
	mWords.insert("B");
	
	mySetItr it = std::begin(mWords), itend = std::end(mWords);
	std::for_each<mySetItr&>(it, itend, [&mWords, &it] (const std::string& word)
    {
        auto p = mWords.equal_range(word);
        int count = static_cast<int>(std::distance(p.first, p.second));
        std::cout << word << " " << count << std::endl;
        std::advance(it, count - 1);
    });
}
