Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <algorithm>
  4. #include <iterator>
  5. #include <map>
  6. #include <sstream>
  7. #include <memory>
  8.  
  9. int main()
  10. {
  11.     std::ifstream input("C:\\arm250\\asd.txt", std::ios::binary);
  12.  
  13.     std::map<char, std::map<char, int>> charactersMap;
  14.     auto prevValue = std::make_pair(false, char());
  15.  
  16.     std::for_each(
  17.         std::istreambuf_iterator<char>(input),
  18.         std::istreambuf_iterator<char>(),
  19.         [&](char in)
  20.     {
  21.         if (prevValue.first)
  22.         {
  23.             auto frequencyMap = &charactersMap[prevValue.second];
  24.             int freqCount = (*frequencyMap)[in];
  25.             (*frequencyMap)[in] = ++freqCount;
  26.         }
  27.         else charactersMap.insert(std::make_pair(in, std::map<char, int>()));
  28.  
  29.         prevValue = std::make_pair(true, in);
  30.     });
  31.  
  32.     std::transform(std::begin(charactersMap), std::end(charactersMap), std::ostream_iterator<std::string>(std::cout, ""),
  33.         [](std::pair<char, std::map<char, int>> freq)
  34.     {
  35.         std::stringstream output;
  36.         int characterTotal = 0;
  37.         std::for_each(std::begin(freq.second), std::end(freq.second),
  38.             [&](std::pair<char, int> freqChar)
  39.         {
  40.             output << freq.first << "->" << freqChar.first << ": " << freqChar.second << std::endl;
  41.             characterTotal += freqChar.second;
  42.         });
  43.         output << freq.first << ": " << characterTotal << std::endl;
  44.         return output.str();
  45.     });
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement